제 4 장 · MySQL 클라이언트 도구 및 SQL 설명

I. 서론 클라이언트 명령

1.mysql

1에 대한 연결 관리 데이터베이스

  • 1)에 연결되어 () 생략
  • 2) 관리 :
#MySQL接口自带的命令
\h 或 help 或?      查看帮助
\G                  格式化查看数据(key:value)
\T 或 tee            记录日志
\c(5.7可以ctrl+c)   结束命令
\s 或 status         查看状态信息
\. 或 source         导入SQL数据
\u或 use             使用数据库
\q 或 exit 或 quit   退出
  • 3) 사용자의 SQL 문을받을

2, 서버에 사용자의 SQL 문을 전송

2.mysqladmin

1, 명령 줄 관리 도구

3.mysqldump

목차 1, 백업 데이터베이스 및 테이블

사용 4.help 명령

mysql> help
mysql> help contents
mysql> help select
mysql> help create
mysql> help create user
mysql> help status
mysql> help show

사용 5.source 명령

#在MySQL中处理输入文件:
#如果这些文件包含SQL语句则称为:
#1.脚本文件
#2.批处理文件
mysql> SOURCE /data/mysql/world.sql
#或者使用非交互式
mysql</data/mysql/world.sql

사용 6.mysqladmin 명령

01)“强制回应 (Ping)”服务器。
02)关闭服务器。
03)创建和删除数据库。
04)显示服务器和版本信息。
05)显示或重置服务器状态变量。
06)设置口令。
07)重新刷新授权表。
08)刷新日志文件和高速缓存。
09)启动和停止复制。
10)显示客户机信息。
#查看MySQL存活状态
[root@db01 ~]# mysqladmin -uroot -p123 ping
#查看MySQL状态信息
[root@db01 ~]# mysqladmin -uroot -p123 status
#关闭MySQL进程
[root@db01 ~]# mysqladmin -uroot -p123 shutdown
#查看MySQL参数
[root@db01 ~]# mysqladmin -uroot -p123 variables
#删除数据库
[root@db01 ~]# mysqladmin -uroot -p123 drop DATABASE
#创建数据库
[root@db01 ~]# mysqladmin -uroot -p123 create DATABASE
#重载授权表
[root@db01 ~]# mysqladmin -uroot -p123 reload
#刷新日志
[root@db01 ~]# mysqladmin -uroot -p123 flush-log
#刷新缓存主机
[root@db01 ~]# mysqladmin -uroot -p123 reload
#修改口令
[root@db01 ~]# mysqladmin -uroot -p123 password

II는. 사용자의 SQL 문을받습니다

1. SQL은 무엇입니까

구조적 쿼리 언어

2.SQL 종

2.1 DDL : 데이터 정의 언어

개체 라이브러리 : 라이브러리 이름, 라이브러리 부동산
개발 사양 : 라이브러리 이름을 소문자

2.1.1 라이브러리 만들기 : 데이터베이스를 생성 | 스키마

#创建oldboy数据库
mysql> create database oldboy;
#创建OLDBOY数据库
mysql> create database OLDBOY;
#查看数据库
mysql> show databases;
#查看oldboy的创建语句(DQL)
mysql> show create database oldboy;
#查看创建数据库语句帮助
mysql> help create database
#创建oldboy数据库添加属性
mysql> create database testa charset utf8;

2.1.2 삭제 라이브러리 : 데이터베이스를 제거

#删除oldboy数据库
mysql> drop database oldboy;

2.1.3 정의 라이브러리를 수정 : 데이터베이스를 변경

#修改oldboy数据库属性
mysql> alter database oldboy charset gbk;
#查看oldboy的创建语句(DQL)
mysql> show create database oldboy;

표 개체 : 열 이름, 열 특성, 제약

2.1.4 테이블 만들기 : CREATE TABLE (개발자 할)

#查看创建表语句帮助
mysql> help create table
#创建表
mysql> create table student(
sid INT,
sname VARCHAR(20),
sage TINYINT,
sgender ENUM('m','f'),
cometime DATETIME);

2.1.5 데이터 유형

int: 整数 -231 ~ 231 -1
varchar:字符类型 (变长)
char: 字符类型 (定长)
tinyint: 整数 -128 ~ 128
enum: 枚举类型
datetime: 时间类型 年月日时分秒
#创建表加其他属性
mysql> create table student(
sid INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT ‘学号’,
sname VARCHAR(20) NOT NULL COMMENT ‘学生姓名’,
sage TINYINT UNSIGNED COMMENT ‘学生年龄’,
sgender ENUM('m','f')  NOT NULL DEFAULT ‘m’ COMMENT ‘学生性别’,
cometime DATETIME NOT NULL COMMENT ‘入学时间’)chatset utf8 engine innodb;
#查看建表语句
mysql> show create table student;
#查看表
mysql> show tables;
#查看表中列的定义信息
mysql> desc student;

2.1.6 데이터 속성

not null: 非空
primary key: 主键(唯一且非空的)
auto_increment: 自增(此列必须是:primary key或者unique key)
unique key: 单独的唯一的
default: 默认值
unsigned: 非负数
comment: 注释

2.1.7 삭제 테이블

#删除表
mysql> drop table student;

2.1.8 테이블 정의를 수정 : 변경 테이블 (개발자 할)

#修改表名
mysql> alter table student rename stu;
#添加列和列定义
mysql> alter table stu add age int;
#添加多个列
mysql> alter table stu add test varchar(20),add qq int;
#指定位置进行添加列(表首)
mysql> alter table stu add classid varchar(20) first;
#指定位置进行添加列(指定列)
mysql> alter table stu add phone int after age;
#删除指定的列及定义
mysql> alter table stu drop qq;
#修改列及定义(列属性)
mysql> alter table stu modify sid varchar(20);
#修改列及定义(列名及属性)
mysql> alter table stu change phone telphone char(20);

2.2 DCL : 데이터 제어 언어

제어 권한

2.2.1 부여

#授权[email protected]用户所有权限(非炒鸡管理员)
mysql> grant all on *.* to root@'10.0.0.51' identified by 'oldboy123';
#怎么去授权一个炒鸡管理员呢?
mysql> grant all on *.* to root@'10.0.0.51' identified by 'oldboy123' with grant option;
#其他参数(扩展)
max_queries_per_hour:一个用户每小时可发出的查询数量
max_updates_per_hour:一个用户每小时可发出的更新数量
max_connetions_per_hour:一个用户每小时可连接到服务器的次数
max_user_connetions:允许同时连接数量

2.2.2 REVOKE

#收回select权限
mysql> revoke select on *.* from root@'10.0.0.51';
#查看权限
mysql> show grants for root@'10.0.0.51';

2.3 DML : 데이터 조작 언어

라인 정보 테이블 운전 데이터

2.3.1 삽입

#基础用法,插入数据
mysql> insert into stu values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456);
#规范用法,插入数据
mysql> insert into stu(classid,birth.sname,sage,sgender,comtime,telnum,qq) values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456);
#插入多条数据
mysql> insert into stu(classid,birth.sname,sage,sgender,comtime,telnum,qq) values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456),
('linux02',2,NOW(),'zhangsi',21,'f',NOW(),111,1234567);

2.3.2 갱신

#不规范
mysql> update student set sgender='f';
#规范update修改
mysql> update student set sgender='f' where sid=1;
#如果非要全表修改
mysql> update student set sgender='f' where 1=1;

2.3.3 삭제

#不规范
mysql> delete from student;
#规范删除(危险)
mysql> delete from student where sid=3;
#DDL删除表
mysql> truncate table student;
  • 1, 의사 삭제의 사용을
    삭제하는 대신 사용하여 업데이트

1) 별도의 상태 표시 줄을 추가

mysql> alter table student add status enum(1,0) default 1;

2)를 사용하여 업데이트

mysql> update student set status='0' where sid=1;

애플리케이션 데이터 질의 3) 존재

mysql> select * from student where status=1;
  • 2 트리거를 사용하여 (이해)
trigger

2.4 DQL : 데이터 쿼리 언어

선택 : 기본 사용법을

#常用用法
mysql> select countrycode,district from city;
#查询单列
mysql> select countrycode from city;
#行级查询
mysql> select countrycode,district from city limit 2;
mysql> select id,countrycode,district from city limit 2,2;
#条件查询
mysql> select name,population from city where countrycode='CHN';
#多条件查询
mysql> select name,population from city where countrycode='CHN' and district='heilongjiang';
#模糊查询
mysql> select name,population,countrycode from city where countrycode like '%H%' limit 10;
#排序查询(顺序)
mysql> select id,name,population,countrycode from city order by countrycode limit 10;
#排序查询(倒叙)
mysql> select id,name,population,countrycode from city order by countrycode desc limit 10;
#范围查询(>,<,>=,<=,<>)
mysql> select * from city where population>=1410000;
#范围查询OR语句
mysql> select * from city where countrycode='CHN' or countrycode='USA';
#范围查询IN语句
mysql> select * from city where countrycode in ('CHN','USA');

III. 문자 집합 정의

문자 집합을 무엇 1. (문자셋)

캐릭터 설정 : 지원의 시스템의 모든 추상 문자 세트를. 문자는 자국 문자, 문장 부호 등의 그래픽 기호, 숫자 등의 텍스트 및 기호의 다양한에 대한 일반적인 용어입니다.

2.MySQL 데이터베이스 문자 집합

1)字符集(CHARACTER)
2)校对规则(COLLATION)

3.MySQL 일반적인 문자 집합

1)UTF8
2)LATIN1
3)GBK

4. 일반적인 정렬

1)ci:大小写不敏感
2)cs或bin:大小写敏感

5. 우리는 보려면 다음 명령을 사용할 수 있습니다

mysql> show charset;
mysql> show collation;

IV. 문자 집합

1. 운영 체제 수준

[root@db01 ~]# source /etc/sysconfig/i18n
[root@db01 ~]# echo $LANG
zh_CN.UTF-8

2. 클라이언트 운영 체제 수준 (SSH)

3.MySQL 인스턴스 수준

방법 1 : 컴파일시에 설치 한 서버로 설정 한 문자의 지정.

cmake . 
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \

방법 2 : 구성 파일에 설정된 문자를 설정합니다

[mysqld]
character-set-server=utf8

4. 데이터베이스 레벨을 구축

mysql> create database oldboy charset utf8 default collate = utf8_general_ci;

테이블 수준의 건설

mysql>  CREATE TABLE `test` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

생각 : 프로덕션 환경에서, 충분한 캐릭터 설정하거나 문자가 설정되어 있지 않은 경우는 어떻게 적절 대처하는 방법?

데이터베이스 생산 환경 변화 (포함한 데이터)의 캐릭터 세트에있어서

mysql> alter database oldboy CHARACTER SET utf8 collate utf8_general_ci;
mysql> alter table t1 CHARACTER SET utf8;

다섯 개 ALL 기타 사항 서보 -OFF 고급 사용 (확장)

1. 다중 테이블 쿼리 (심지어 테이블 쿼리)에 가입

컬렉션 :

[zhang3,li4,wang5]

[50,70,80]

T1 :

sid 1 2 3
sname zhang3 li4 wang5

T2 :

sid 1 2 3
mark 50 70 80

패러다임 : 테이블로 원자로서, 분할 테이블로 분할 될 수없는 데이터 중복성을 감소시키고 일관성 문제를 방지한다. (설계 사양 개발 단계)

예 : 조 스미스는 두 테이블의 내용을 기반으로 결과를 발견

select t1.sname,t2.mark from t1,t2 where t1.sid=t2.sid and t1.sname=’zhang3’;

1.1 종래의 커넥터 (커넥터 만이 교차 할 수 있음)

#世界上小于100人的人口城市是哪个国家的?
select city.name,city.countrycode,country.name 
from city,country 
where city.countrycode=country.code 
and city.population<100;

1.2 NATURAL는 (조인 된 테이블은 공통 열 이름이부터) JOIN

SELECT city.name,city.countrycode ,countrylanguage.language ,city.population
FROM  city NATURAL  JOIN  countrylanguage 
WHERE population > 1000000
ORDER BY population;

1.3 기업 다중 테이블 쿼리를 조인 (EN)

select city.name,city.countrycode,country.name 
from city join country on city.countrycode=country.code 
where city.population<100;

권장 사항 : 문, 전 작은 테이블, 게시물에 큰 테이블을 조인을 사용.

1.4 외부 커넥터

select city.name,city.countrycode,country.name 
from city left join country 
on city.countrycode=country.code 
and city.population<100;

1.5 UNION (합병 문의)

#范围查询OR语句
mysql> select * from city where countrycode='CHN' or countrycode='USA';
#范围查询IN语句
mysql> select * from city where countrycode in ('CHN','USA');
替换为:
mysql> select * from city where countrycode='CHN' 
union  all
select * from city where countrycode='USA' limit 10
union:去重复合并
union all :不去重复
使用情况:union<union all

추천

출처www.cnblogs.com/Forever-x/p/10992551.html