MySQL数据库系统学习(从入门到精通)_mysql学习

mysql> exit
Bye


### 三,数据库定义语言(DDL)


#### 1.DDL数据库操作


##### 1.1.库操作


###### 1.1.1.查询


查询所有数据库



show databases;


查询当前数据库


###### 1.1.2.创建



create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则]


###### 1.1.3.删除



drop database [is exists] 数据库名;


###### 1.1.4.使用



use 数据库名;


##### 1.2.表操作


###### 1.2.1.查询当前数据库所有表



show table;


###### 1.2.2.查询表结构



desc 表名;


###### 1.2.3.查询指定表的建表语句



show create table 表名(
字段1 类型 [comment 注释],
字段2 类型 [comment 注释],
字段3 类型 [comment 注释]
)[comment 表注释];


###### 1.2.4.删除表



drop table 表名;


###### 1.2.5.删除指定表,并重新创建表



truncate table 表明;


##### 1.3.表管理


###### 1.3.1.添加字段



alter table 表名 add 字段名 类型 [comment 注释] [约束];


###### 1.3.2.修改数据类型



alter table 表名 modify 字段名 新类型;


###### 1.3.3.修改字段名和字段类型



alter table 表名 change 旧字段 新字段 类型 [comment 注释] [约束];


###### 1.3.4.删除字段



alter table 表名 drop 字段名;


###### 1.3.5.修改表名



alter table 表名 rename to 新表名;


#### 2.管理数据库


##### 1.查看MySQL创建格式



mysql> help create database;
Name: ‘CREATE DATABASE’
Description:
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_option] …

create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
}

解释:
create:创建语句
database:创建数据库
schema:同database
if not exists:在创建数据库之前进⾏判断,只有该数据库⽬前尚不存在时才能执⾏操作。此选项可以⽤来避免数据库已经存在⽽重复创建的错误
db_name:自定义创建数据库名
create_option:字符编码选项
character set:字符编码
collate:校对排序规则
create database test default cartacter set=utf8 collate=utf8_bin;


##### 2.查看系统支持的字符集



mysql> show charset;
±---------±--------------------------------±--------------------±-------+
| Charset | Description | Default collation | Maxlen |
±---------±--------------------------------±--------------------±-------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
| hp8 | HP West European | hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |
| ascii | US ASCII | ascii_general_ci | 1 |
| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |
| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |
| tis620 | TIS620 Thai | tis620_thai_ci | 1 |
| euckr | EUC-KR Korean | euckr_korean_ci | 2 |
| koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |
| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |
| greek | ISO 8859-7 Greek | greek_general_ci | 1 |
| cp1250 | Windows Central European | cp1250_general_ci | 1 |
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
| cp866 | DOS Russian | cp866_general_ci | 1 |
| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |
| macce | Mac Central European | macce_general_ci | 1 |
| macroman | Mac West European | macroman_general_ci | 1 |
| cp852 | DOS Central European | cp852_general_ci | 1 |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |
| cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |
| utf16 | UTF-16 Unicode | utf16_general_ci | 4 |
| utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 |
| cp1256 | Windows Arabic | cp1256_general_ci | 1 |
| cp1257 | Windows Baltic | cp1257_general_ci | 1 |
| utf32 | UTF-32 Unicode | utf32_general_ci | 4 |
| binary | Binary pseudo charset | binary | 1 |
| geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |
| cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |
| gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 |
±---------±--------------------------------±--------------------±-------+
41 rows in set (0.00 sec)

常用字符集解释:
gb2312:简体中文汉字编码国家标准
gbk:可以说是对 GB2312 编码的扩充
gb18030:完全支持 Unicode,无需动用造字区即可支持中国国内少数民族文字、中日韩和繁体汉字以及 emoji 等字符,编码空间庞大,最多可定义 161 万个字符。
Unicode:国际标准字符集
utf-8:是一种对Unicode的可变长度字符编码。它可以用一至四个字节对Unicode字符集中的所有有效编码点进行编码,它逐渐成为网络传输中优先采用的编码方式。
utf-16:UTF-16 也是一种变长字符编码, 这种编码方式比较特殊, 它将字符编码成 2 字节 或者 4 字节


##### 3.创建数据库



mysql> create database if not exists test default character set=gb18030 collate=gb18030_bin;
Query OK, 1 row affected (0.00 sec)

解释:
创建一个字符集为gb18030排序规则gb18030_bin,名为test,如果存在将跳过创建,不出现报错信息,如果不存在进行创建


##### 4.修改数据库字符集



mysql> alter database test default character set=‘utf8’ ; #修改库的
Query OK, 1 row affected (0.00 sec)

mysql> show create database test;
±---------±--------------------------------------------------------------+
| Database | Create Database |
±---------±--------------------------------------------------------------+
| test | CREATE DATABASE test /*!40100 DEFAULT CHARACTER SET utf8 */ |
±---------±--------------------------------------------------------------+
1 row in set (0.00 sec)


##### 5.修改表存储引擎



mysql> show create table test;
±------±----------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
±------±----------------------------------------------------------------------------------------------------------------------------+
| test | CREATE TABLE test (
id int(11) DEFAULT NULL,
name varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
±------±----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> alter table test engine=MyISAM;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> show create table test;
±------±----------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
±------±----------------------------------------------------------------------------------------------------------------------------+
| test | CREATE TABLE test (
id int(11) DEFAULT NULL,
name varchar(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
±------±----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


##### 6.删除数据库



mysql> drop database test; #表内删除库
Query OK, 0 rows affected (0.00 sec)
mysql> mysqladmin -u root -p drop test #表外删除库
password:


#### 3.管理表


##### 1.创建表



mysql> create table if not exists txt(id int,name varchar(10) not null,age int not null,primary key(id))engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.00 sec)


##### 2.查看表结构和类型



mysql> desc txt;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(10) | NO | | NULL | |
| age | int(11) | NO | | NULL | |
±------±------------±-----±----±--------±------+
3 rows in set (0.00 sec)

mysql> show create table txt;
±------±-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
±------±-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| txt | CREATE TABLE txt (
id int(11) NOT NULL,
name varchar(10) NOT NULL,
age int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
±------±-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


##### 3.插入数据



mysql> insert into txt (id,name,age) values(1,‘zhangsan’,12);
Query OK, 1 row affected (0.00 sec)
mysql> insert into txt values(2,‘lisi’,15),(3,‘wangwu’,18);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from txt;
±—±---------±----+
| id | name | age |
±—±---------±----+
| 1 | zhangsan | 12 |
| 2 | lisi | 15 |
| 3 | wangwu | 18 |
±—±---------±----+
3 rows in set (0.00 sec)


##### 4.对表的字符集进行修改



mysql> alter table txt convert to character set gb18030;
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> show create table txt;
±------±--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
±------±--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| txt | CREATE TABLE txt (
id int(11) NOT NULL,
name varchar(10) NOT NULL,
age int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=gb18030 |
±------±--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


##### 5.对表重命名



mysql> alter table a2 rename a3;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
±---------------+
| Tables_in_test |
±---------------+
| a3 |
±---------------+


##### 6.删除表



mysql> drop table txt;
Query OK, 0 rows affected (0.00 sec)


#### 4.对表内数据进行修改


###### 1.查看表内字符集



mysql> show full columns from txt;
±------±------------±----------------±-----±----±--------±------±--------------------------------±--------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
±------±------------±----------------±-----±----±--------±------±--------------------------------±--------+
| id | int(11) | NULL | NO | PRI | NULL | | select,insert,update,references | |
| name | varchar(10) | utf8_general_ci | NO | | NULL | | select,insert,update,references | |
| age | int(11) | NULL | NO | | NULL | | select,insert,update,references | |
±------±------------±----------------±-----±----±--------±------±--------------------------------±--------+


###### 2.对表内字段进行修改字符集



格式:alter table 表名 modify 字段 属性 character set 字符集 collate 校验集;



mysql> alter table txt modify age varchar(50) character set utf8 collate utf8_general_ci;
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> show full columns from txt;
±------±------------±----------------±-----±----±--------±------±--------------------------------±--------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
±------±------------±----------------±-----±----±--------±------±--------------------------------±--------+
| id | int(11) | NULL | NO | PRI | NULL | | select,insert,update,references | |
| name | varchar(50) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
| age | varchar(50) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
±------±------------±----------------±-----±----±--------±------±--------------------------------±--------+
3 rows in set (0.00 sec)


###### 3.对字段属性进行修改



mysql> alter table txt modify age int;
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> show full columns from txt;
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
±------±------------±----------------±-----±----±--------±------±--------------------------------±--------+
| id | int(11) | NULL | NO | PRI | NULL | | select,insert,update,references | |
| name | varchar(50) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
| age | int(11) | NULL | YES | | NULL | | select,insert,update,references | |
3 rows in set (0.00 sec)


###### 4.创建字段的属性


###### 1.字段属性




| 数据类型: | 类型 |
| --- | --- |
| int: | 整型 |
| float | 浮点型(单精度) |
| double | 浮点型(双精度) |
| date | 日期值(YYYY-MM-DD) |
| time | 时间值(HH:MM:SS) |
| datetime | 混合日期和时间(YYYY-MM-DD hh:mm:ss) |
| char | 定义长字符串 |
| varchar | 变长字符字符串 |


###### 2.其他选项




| 选项 | 解释 |
| --- | --- |
| null | 数据可以包含为空的内容 |
| not null | 数据列不能为空 |
| default | 默认值 |
| [constraint <约束名>] primary key | 主键(唯一,不能为空) |
| primary key (字段1,字段2) | 多字段联合主键 |
| foreign key(字段) references 表(字段) | 外键 |
| auto\_increment | 自动递增,适用于整形 |
| unsigned | 无符号 |
| character set 字符集 | 指定字符集 |
| comment | 注释 |


###### 3.使用命令



mysql> create table a1 (
-> id int primary key auto_increment,
-> name varchar(10) not null unique,
-> age int default 18,
-> stu_id int );
Query OK, 0 rows affected (0.00 sec)

mysql> create table a2 (
-> id int primary key auto_increment,
-> name varchar(10),
-> foreign key(id) references a1(id));
Query OK, 0 rows affected (0.00 sec)


###### 5.修改字段内容



mysql> update txt set name=‘zhaoliu’ where name=‘zhangsan’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from txt;
±—±--------±-----+
| id | name | age |
±—±--------±-----+
| 1 | zhaoliu | 12 |
| 2 | lisi | 15 |
| 3 | wangwu | 18 |
±—±--------±-----+
3 rows in set (0.00 sec)


###### 6.删除字段内容



mysql> delete from txt where name=‘zhaoliu’;
Query OK, 1 row affected (0.00 sec)

mysql> select * from txt;
±—±-------±-----+
| id | name | age |
±—±-------±-----+
| 2 | lisi | 15 |
| 3 | wangwu | 18 |
±—±-------±-----+
2 rows in set (0.00 sec)


###### 7.查看字段类型



mysql> show create table a1;
| a1 | CREATE TABLE a1 (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(10) NOT NULL,
age int(11) DEFAULT ‘18’,
stu_id int(11) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY name (name)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
±------±--------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)

mysql> desc a2;
±------±------------±-----±----±--------±---------------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±---------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
±------±------------±-----±----±--------±---------------+
2 rows in set (0.00 sec)


###### 8.添加字段



mysql> alter table a1 add stu_number varchar(10) not null unique;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc a1;
±-----------±------------±-----±----±--------±---------------+
| Field | Type | Null | Key | Default | Extra |
±-----------±------------±-----±----±--------±---------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | UNI | NULL | |
| age | int(11) | YES | | 18 | |
| stu_id | int(11) | YES | | NULL | |
| stu_number | varchar(10) | NO | UNI | NULL | |
±-----------±------------±-----±----±--------±---------------+
5 rows in set (0.00 sec)
mysql> alter table a1 add stu_number_1 varchar(10) not null unique first; #添加到首行
mysql> alter table a1 add stu_number_2 varchar(10) not null unique after id; #添加到id行之后
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0


###### 9.删除字段



mysql> alter table a1 drop stu_number_1;


###### 10.修改字段排序顺序



mysql> alter table a1 modify stu_number varchar(10) first;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc a1;
±-------------±------------±-----±----±--------±---------------+
| Field | Type | Null | Key | Default | Extra |
±-------------±------------±-----±----±--------±---------------+
| stu_number | varchar(10) | YES | UNI | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| stu_number_2 | varchar(10) | NO | UNI | NULL | |
| name | varchar(10) | NO | UNI | NULL | |
| age | int(11) | YES | | 18 | |
| stu_id | int(11) | YES | | NULL | |
±-------------±------------±-----±----±--------±---------------+
6 rows in set (0.00 sec)

mysql> alter table a1 modify age int after id ;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc a1;
±-------------±------------±-----±----±--------±---------------+
| Field | Type | Null | Key | Default | Extra |
±-------------±------------±-----±----±--------±---------------+
| stu_number | varchar(10) | YES | UNI | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| age | int(11) | YES | | NULL | |
| stu_number_2 | varchar(10) | NO | UNI | NULL | |
| name | varchar(10) | NO | UNI | NULL | |
| stu_id | int(11) | YES | | NULL | |
±-------------±------------±-----±----±--------±---------------+
6 rows in set (0.00 sec)


###### 11.删除外键约束



mysql> create table test4(id int primary key ,name varchar(10),constraint test foreign key(id) references test2(id));
Query OK, 0 rows affected (0.01 sec)

mysql> alter table test4 drop foreign key test;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc test4;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(10) | YES | | NULL | |
±------±------------±-----±----±--------±------+
2 rows in set (0.00 sec)


### 四,数据类型和操作符


#### 1.数据类型简介



数值数据类型:TINYINT 、SMALINT 、MEDIUMINT 、INT 、BIGINT 、FLOAT 、DOUBLE 、DECIMAL
日期/时间类型:YEAR 、TIME 、DATE 、DATETIME 、TIMESTAMP
字符串类型:CHAR 、VARCHAR 、BINARY 、VARBINARY 、BLOB 、TEXT 、ENUM 、SET


#### 2.数据类型


##### 1.整数类型




| 类型说明 | 存储需求 | 有符号的取值范围 | 无符号的取值范围 |
| --- | --- | --- | --- |
| tinyint | 1字节 | -128-127 | 0~255 |
| smallint | 2字节 | -32768-32767 | 0~65535 |
| mediumint | 3字节 | -8388608-8388607 | 0~16777215 |
| int | 4字节 | -2147483648-2147483647 | 0~4294967295 |
| bigint | 8字节 | -9223372036854775808 - 9223372036854775807 | 0~18446744073709551615 |


##### 2.浮点型和定点型




| 类型说明 | 说明 | 存储需求 | 无符号的取值范围 |
| --- | --- | --- | --- |
| float | 单精度浮点型 | 4字节 | 3.402823466EE+38 ~ -1.175494251E-38 |
| double | 双精度浮点型 | 8字节 | -1.7976931348623157E+308 ~ -2.2250738585072014E-308 |
| decimal | 压缩的严格定点数 | M+2个字节 不固 定 | 不固定 |


##### 3.日期/时间类型




| 类型说明 | 存储需求 | 日期格式 | 日期范围 |
| --- | --- | --- | --- |
| year | 1字符 | YYYY | 1901~2155 |
| time | 3字符 | HH:MM:SS | -838:59:59 ~ 838:59:59 |
| date | 3字节 | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 |
| datetime | 8字节 | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
| timestamp | 4字节 | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC |


##### 4.字符串类型




| 类型 | 说明 | 存储需求 |
| --- | --- | --- |
| char() | 固定长度的文本字符串 | M 字节,1 <= M <= 255 |
| varchar() | 可变长度的文本字符串 | L+1 字节,在此 L <= M 和 1 <= M <= 255 |
| tinytext | 非常小的文本字符串 | L+1 字节,在此 L < 2^8 |
| text | 小的文本字符串 | L+2 字节,在此 L < 2^16 |
| mediumtext | 中等大小的文本字符串 | L+3 字节,在此 L < 2^24 |
| longtext | 大的文本字符串 | L+4 字节,在此 L < 2^32 |
| enum | 枚举类型,只有一个枚举字符串值 | 1 或 2 个字节,取决于枚举值的数目(最大值 65535) |
| set | 一个设置,字符串对象可以有零个或所得set成员 | 1, 2, 3, 4 或 8 个字节,取决于集合成员的数量 (最多64个成员) |


##### 5.二进制字符串




| 二进制类型 | 说明 | 存储需求 |
| --- | --- | --- |
| bit(M) | 位字段类型 | 大约(M+7)/8 个字节 |
| binary(M) | 固定长度的二进制字符串 | M个字节 |
| varbinary(M) | 可变长度的二进制字符串 | M+1个字节 |
| tinyblob(M) | 小的BLOB | L+1 字节,在此 L < 2^8 |
| blob(M) | 小的BLOB | L+2 字节,在此 L < 2^16 |
| meidumblob(M) | 中等大小的BLOB | L+3 字节,在此 L < 2^24 |
| longblob(M) | 非常大的blob | L+4 字节,在此 L < 2^32 |


#### 3.操作符


##### 1.算数运算符




| 运算符 | 作用 |
| --- | --- |
| + | 加法 |
| - | 减法 |
| \* | 乘法 |
| / | 除法 |
| % | 求余 |


##### 2.其他运算符




| 运算符 | 作用 |
| --- | --- |
| = | 等于 |
| <=> | 安全的等于 |
| <> | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| is null | 判断一个值是否为null |
| is not null | 判断一个值是否不为null |
| least | 当有两个或多个参数时,返回最小值 |
| greatest | 当有两个或多个参数时,返回最大值 |
| between … and … | 判断一个值是否落在两个值之间 |
| in (值1,值2,值3) | 判断一个值是否是in列表中的任意一个值 |
| not in (值1,值2,值3) | 判断一个值是否不是in列表中的任意一个值 |
| like | 通配符匹配 |
| regexp | 正则表达式匹配 |


##### 3.逻辑运算符




| 运算符 | 作用 |
| --- | --- |
| not或! | 逻辑非 |
| and或&& | 逻辑与 |
| or或|| | 逻辑或 |
| xor | 逻辑异或 |


##### 4.位运算符




| 运算符 | 作用 |
| --- | --- |
| | | 位或 |
| & | 位与 |
| ^ | 位异或 |
| << | 位左移 |
| >> | 位右移 |
| ~ | 位取反 |


### 五,数据库用户权限(DCL)


#### 一,基本用户权限命令


##### 1.创建用户并赋予权限



mysql> grant all on test.* to zhangsan@‘%’ identified by ‘123.com’;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show grants for zhangsan@‘%’;
±---------------------------------------------------+
| Grants for zhangsan@% |
±---------------------------------------------------+
| GRANT USAGE ON *.* TO ‘zhangsan’@‘%’ |
| GRANT ALL PRIVILEGES ON test.* TO ‘zhangsan’@‘%’ |
±---------------------------------------------------+
2 rows in set (0.00 sec)


##### 2.撤销删除权限



mysql> revoke drop,delete on test.* from zhangsan@‘%’;
Query OK, 0 rows affected (0.00 sec)


##### 3.查看权限



mysql> show grants for zhangsan@‘%’;
±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for zhangsan@% |
±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ‘zhangsan’@‘%’ |
| GRANT SELECT, INSERT, UPDATE, CREATE, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON test.* TO ‘zhangsan’@‘%’ |
±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)


### 六,数据库查询(DQL)


#### 1.select单独使用



mysql> select @@basedir; #mysql安装目录
mysql> select @@port; #mysql端口号
mysql> select @@innodb_flush_log_at_trx_commit; #日志刷新策略
mysql> show variables like ‘innodb%’; #模糊查看innodb开头的配置
mysql> select database(); #查看当前库名
mysql> select now(); #查看当前系统时间
mysql> select @@server_id; #查看本实例id号,群集中不能重复


#### 2.select通用语法



select {字段列表} from <表1>,<表2> [where 表达式] [group by] [having] [order by] [limit <>]




| 字段 | 作用 |
| --- | --- |
| select | 显示的列名(多列逗号分开) |
| from | 表名(多个表逗号分开) |
| where | 过滤条件的列 |
| group by | 分组的列 |
| having | 分组后的过滤聚合函数 |
| order by | 排序的列(desc降序 默认:asc升序) |
| limit | 显示前几行 LIMIT M,N:跳过M行,显示一共N行 LIMIT Y OFFSET X: 跳过X行,显示一共Y行 |
| like %\_ | 模糊查询 %:任意字符 \_:一个字符 |
| union | 多个结果集合并查询的功能 |
| union all | 多个结果集合并查询的功能,去重 |


通用符:




| 选项 | 作用 |
| --- | --- |
| and | 并且 |
| or | 或者 |
| in | 与or相同 |
| between …and… | 在什么范围之内 |
| is not | 查询空值 |
| distinct | 查询结果不重复 |


### 七,数据库操作语言(DML)


#### 1.添加数据


给指定字段添加数据



insert into 表名 (字段名1,字段名2) values (值1,值2);


给全部字段添加数据



insert into 表名 values(值1,值2);


批量添加数据



insert into 表名 (字段名1,字段名2) values (值1,值2),(值1,值2),(值1,值2);
insert into 表名 values (值1,值2),(值1,值2),(值1,值2);


注意


* 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
* 字符串和日期型数据应该包含在引号中。
* 插入的数据大小,应该在字段的规定范围内


#### 2.修改数据


修改数据



update 表名 set 字段=值1,字段2=值2 [where 条件];


#### 3.删除数据


删除数据



delete from 表名 [where 条件]


注意


* delete语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
* delete语句不能删除某一个字段的值(可以使用update)


### 八,MySQL函数


#### 一.数学函数



(1) 绝对值函数:ABS(x) 用于返回 x 的绝对值

(2) 返回圆周率的函数:PI() PI() 返回圆周率值

(3) 平方根函数:SQRT(x) SQRT(x) 返回非负数 x 的二次方根

(4) 求余函数:MOD(x,y) MOD(x,y) 返回 x 被 y 除后的余数,MOD(x,y) 对于带有小数部分的数值也起作用,它 返回除法运算后的精确余数

(5) 获取整数的函数:CEIL(x) 、CEILING(x) 、FLOOR(x) CEIL(x) 用于返回不小于 x 的最小整数值

​ CEILING(x) 用于返回不小于 x 的最小整数

​ FLOOR(x) 返回不大于 x 的最大整数值

(6) 获取随机数的函数:RAND() 、RAND(x) RAND() 用于返回一个随机浮点值,范围在 0 ~ 1 之间

​ RAND(x) 用于返回一个随机浮点值,范围在 0~1 之间,x 被用作种子值,用来产生重复序列

(7) 四舍五入的函数:ROUND(x) 、ROUND(x,y) ROUND(x) 用于对 x 进行四舍五入

​ ROUND(x,y) 用于对 x 进行四舍五入,并保留小数点后 y 位

(8) 截取数值的函数:TRUNCATE(x,y) TRUNCATE(x,y) 用于对 x 进行截取,结果保留小数点后 y 位

(9) 符号函数:SIGN(x) SIGN(x) 用于返回参数 x 的符号,当 x 为负数时返回 -1 ,当 x 为正数时返回 1 , 当 x 为 零时返回 0

(10) 幂运算函数:POW(x,y) 、POWER(x,y) 、EXP(x) POW(x,y) 用于返回 x 的 y 次方的结果

(11) 对数运算函数:LOG(x) 、LOG10(x) LOG(x) 返回 x 的自然对数

​ 使用 LOG10(x) 计算以 10 为基数的对数

(12) 角度与弧度相互转换的函数:RADIANS(x) 、DEGREES(x) RADIANS(x) 用于将参数 x 由角度转化为弧度

​ DEGREES(x) 用于将参数 x 由弧度转化为角度

(13) 正弦函数和反正弦函数:SIN(x) 、ASIN(x) SIN(x) 用于返回 x 的正弦值,其中 x 为弧度值

​ ASIN(x) 用于返回 x 的反正弦,即正弦为 x 的值

(14) 余弦函数和反余弦函数:COS(x) 、ACOS(x) COS(x) 用于返回 x 的余弦,其中 x 为弧度值

​ ACOS(x) 用于返回 x 的反余弦,即余弦是 x 的值

(15) 正切函数、反正切函数、余切函数:TAN(x) 、ATAN(x) 、COT(x) TAN(x) 返回 x 的正切,其中 x 为给定的弧 度值

​ ATAN(x) 用于返回 x 的反正切,即正切为 x 的值

​ COT(x) 用于返回 x 的余切


二,字符串函数



(1) 计算字符串长度的函数:CHAR_LENGTH(str) 、LENGTH(str) CHAR_LENGTH(str) 用于统计 str 的字符个数
LENGTH(str) 用于统计 str 的字节长度,使用 utf8 编码字符集时,一个汉字是3个字节,一个数字或字母是1个 字节

(2) 合并字符串的函数:CONCAT(s1,s2,…) 、CONCAT_WS(x,s1,s2,…) CONCAT(s1,s2,…) 用于合并字符串 s1, s2, … ,如果有一个参数为 NULL,则结果为 NULL CONCAT_WS(x,s1,s2,…) 以 x 作为分隔符,将 s1, s2, … 合并,如果 分隔符为 NULL ,则结果为 NULL

(3) 替换字符串的函数:INSERT(s1,x,len,s2) (1) INSERT(s1,x,len,s2) 用于返回字符串 s1,其子字符串起始于 x 位 置和被字符串 s2 取代的 len 字符 (2) 如果 x 超过字符串长度,则返回值为原始字符串,如果 len 的长度大于其 他字符串的长度则从位置 x 开始替换 (3) 如果任何一个参数为 NULL ,则返回值为 NULL

(4) 转换大小写的函数:LOWER(str) 、LCASE(str) 、UPPER(str) 、UCASE(str) LOWER(str) 用于将字符串 str 中的 字母字符全部转换成小写字母

​ LCASE(str) 用于将字符串 str 中的字母字符全部转换成小写字母

​ UPPER(str) 用于将 str 中的小写字母转换成大写字母

​ UCASE(str) 用于将 str 中的小写字母转换成大写字母

(5) 获取指定长度的字符串的函数:LEFT(s,n) 、RIGHT(s,n) LEFT(s,n) 用于返回字符串 s 开始的最左边 n 个字符

​ RIGHT(s,n) 用于返回字符串 s 中右边 n 个字符

(6) 填充字符串的函数:LPAD(s1,len,s2) 、RPAD(s1,len,s2) LPAD(s1,len,s2) 返回字符串 s1 ,其左边由字符串 s2 填充到 len 字符长度,如果 s1 的长度大于 len ,则返回值被缩短至 len 长度

​ RPAD(s1,len,s2) 返回字符串 s1 ,其右边由字符串 s2 填充到 len 字符长度,如果 s1 的长度大于 len ,则返回值 被缩短至 len 长度

(7) 删除空格的函数:LTRIM(s) 、RTRIM(s) 、TRIM(s) LTRIM(s) 用于删除字符串 s 左侧的空格

​ RTRIM(s) 用于删除字符串 s 右侧的空格

​ TRIM(s) 用于删除字符串 s 两侧的空格

(8) 删除指定字符串的函数:TRIM(s1 FROM s) TRIM(s1 FROM s) 用于删除字符串 s 中两端所有的子字符串 s1 , 如果没有指定 s1 ,则默认删除字符串 s 两侧的空格

(9) 重复生成字符串的函数:REPEAT(s,n) REPEAT(s,n) 用于重复字符串 s ,n 表示重复多少次

(10) 空格函数:SPACE(n) SPACE(n) 用于返回 n 个空格

(11) 替换函数:REPLACE(s,s1,s2) REPLACE(s,s1,s2) 表示使用字符串 s2 替换字符串 s 中所有的字符串 s1

(12) 比较字符串大小的函数:STRCMP(s1,s2) STRCMP(s1,s2) 用于比较字符串 s1 和 s2 的大小,若所有字符串相 同则返回 0 ,若第一个字符串大于第二个字符串则返回 1 ,若第一个字符串小于第二个字符串则返回 -1

(13) 获取子字符串的函数:SUBSTRING(s,n,len) 、MID(s,n,len) SUBSTRING(s,n,len) 用于获取指定位置的子字符 串

​ MID(s,n,len) 用于获取指定位置的子字符串

(14) 匹配子字符串开始位置的函数:LOCATE(str1,str) 、POSITION(str1 IN str) 、INSTR(str, str1) LOCATE(str1,str) 用于返回字符串 str1 在字符串 str 中的开始位置

​ POSITION(str1 IN str) 用于返回字符串 str1 在字符串 str 中的开始位置
​ INSTR(str, str1) 用于返回子字符串 str1 在字符串 str 中的开始位置

(15) 反转字符串的函数:REVERSE(s) REVERSE(s) 用于将字符串 s 反转

(16) 返回指定位置的字符串的函数:ELT(n, s1, s2, s3, …) ELT(n, s1, s2, s3, …) 用于返回第 n 个字符串,如果 n 超出范围则返回 NULL

(17) 返回指定字符串位置的函数:FIELD(s, s1, s2, …) FIELD(s, s1, s2, …) 用于返回字符串 s 在列表 s1, s2, … 中 的位置,如果不存在字符串 s 则返回 0 ,如果字符串 s 是 NULL 也返回 0
(18) 返回子字符串位置的函数:FIND_IN_SET(s1, s2) FIND_IN_SET(s1, s2) 用于返回字符串 s1 在字符串列表 s2 中的位置


三,日期和时间函数



(1) 获取当前日期的函数:CURDATE() 、CURRENT_DATE() CURDATE() 用于获取系统当前日期
CURRENT_DATE() 用于系统获取当前日期
(2) 获取当前时间的函数:CURTIME() 、CURRENT_TIME() CURTIME() 用于获取系统当前时间

(3) 获取当前日期和时间的函数:CURRENT_TIMESTAMP() 、LOCALTIME() 、NOW() 、SYSDATE() CURRENT_TIMESTAMP() 用于获取系统当前日期和时间

​ LOCALTIME() 用于获取系统当前日期和时间

​ NOW() 用于获取系统当前日期和时间

​ SYSDATE() 用于获取系统当前日期和时间

(4) 获取时间戳的函数:UNIX_TIMESTAMP() UNIX_TIMESTAMP() 用于获取 UNIX 格式的时间戳

(5) 转换时间戳的函数:FROM_UNIXTIME() FROM_UNIXTIME() 用于将 UNIX 格式的时间戳转换为普通格式的时 间

(6) 获取 UTC 日期的函数:UTC_DATE() UTC_DATE() 用于获取当前 UTC (世界标准时间) 日期值

(7) 获取 UTC 时间的函数:UTC_TIME() UTC_TIME() 用于获取当前 UTC (世界标准时间) 时间值

(8) 获取月份的函数:MONTH(date) 、MONTHNAME(date) MONTH(date) 用于返回 date 对应的月份

​ MONTHNAME(date) 用于返回 date 对应月份的英文全名

(9) 获取星期的函数:DAYNAME(date) 、DAYOFWEEK(date) 、WEEKDAY(date) 、WEEK(date) 、 WEEKOFYEAR(date) DAYNAME(date) 用于返回 date 对应的工作日的英文名称

​ DAYOFWEEK(date) 用于返回 date 对应的一周中的索引,1 表示周日,2 表示周一,… ,7 表示周六

​ WEEKDAY(date) 用于返回日期对应的工作日索引,0 表示周一,1 表示周二,… ,6 表示周日

​ WEEK(date) 用于计算 date 是一年中的第几周,一年有 53 周

​ WEEKOFYEAR(date) 用于计算日期 date 是一年中的第几周,一年有 53 周

(10) 获取天数的函数:DAYOFYEAR(date) 、DAYOFMONTH(date) DAYOFYEAR(date) 用于返回 date 是一年中的 第几天,一年有 365 天

​ DAYOFMONTH(date) 用于计算 date 是一个月中的第几天

(11) 获取年份的函数:YEAR(date) YEAR(date) 返回 date 对应的年份

(12) 获取季度的函数:QUARTER(date) QUARTER(date) 返回 date 对应的一年中的季度值
(13) 获取分钟的函数:MINUTE(time) MINUTE(time) 返回 time 对应的分钟值

(14) 获取秒钟的函数:SECOND(time) SECOND(time) 返回 time 对应的秒数

(15) 获取日期的指定值的函数:EXTRACT(type FROM date) EXTRACT(type FROM date) 用于获取指定的日期值

(16) 时间和秒钟转换的函数:TIME_TO_SEC(time) 、SEC_TO_TIME(time) TIME_TO_SEC(time) 用于将 time 转换 为秒钟,公式为 " 小时3600 + 分钟60 + 秒 "

​ SEC_TO_TIME(time) 用于将秒值转换为时间格式

(17) 计算日期和时间的函数:DATE_ADD() 、ADDDATE() 、DATE_SUB() 、SUBDATE() 、ADDTIME() 、 SUBTIME() 、DATE_DIFF() DATE_ADD() 用于对日期进行加运算,格式为 DATE_ADD(date, INTERVAL expr type),expr 与 type 的关系

​ DATE_SUB() 用于对日期进行减运算,格式为 DATE_SUB(date, INTERVAL expr type) ,expr 与 type 的关系

​ SUBDATE() 用于对日期进行减运算,格式为 SUBDATE(date, INTERVAL expr type) ,expr 与 type 的关系

​ ADDTIME() 用于对日期进行加运算,格式为 ADDTIME(date, expr)

​ SUBTIME() 用于对日期进行减运算,格式为 SUBTIME(date, expr)

​ DATE_DIFF() 用于计算两个日期之间的间隔天数

(18) 将日期和时间格式化的函数:DATE_FORMAT(date, format) 、TIME_FORMAT(time, format) 、 GET_FORMAT(val_type, format_type) DATE_FORMAT(date, format) 用于格式化日期,即根据 format 指定的格式 显示 date 值,format 格式

​ TIME_FORMAT(time, format) 用于格式化时间,即根据 format 指定的格式显示 time 值,format 格式

​ GET_FORMAT() ,我们指定值类型和格式化类型,然后会显示成格式字符串


四.条件判断函数



(1) IF() IF(expr, v1, v2) 如果表达式 expr 为 TRUE ,则返回值为 v1 ,否则返回 v2

(2) IFNULL() IFNULL(v1, v2) ,如果 v1 不为 NULL ,则返回值为 v1 ;如果 v1 为 NULL ,则返回值为 v2

(3) CASE 语法:CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rn] END 含义:如果 expr 等于某个 vn ,则返回对应位置 THEN 后面的结果,如果与所有值都不相等,则返回 ELSE 后面的 rn


五.系统信息函数



(1) 获取 MySQL 版本号的函数:VERSION() VERSION() 用于获取 MySQL 版本号

(2) 查看当前用户的连接数的ID函数:CONNECTION_ID() CONNECTION_ID() 用于查看当前用户的连接数

  1. Id :用户登录 MySQL 时,系统分配的连接 id
  2. User :当前连接的用户
  3. Host :显示这个语句是从哪个 IP 的哪个端口上发出的,可以用来追踪出现问题语句的用户
  4. db :显示这个进程目前连接的是哪个数据库
  5. Command :显示当前连接执行的命令,一般取值为休眠(Sleep)、查询(Query)、连接(Connect)
  6. Time :显示这个状态持续的时间,单位是秒
  7. State :显示使用当前连接的 SQL 语句的状态
  8. info :显示这个 SQL 语句

(3) 查看当前使用的数据库的函数:DATABASE() 、SCHEMA() DATABASE() 用于查看当前使用的数据库
SCHEMA() 用于查看当前使用的数据库

(4) 查看当前登录的用户名的函数:USER() 、CURRENT_USER() 、SYSTEM_USER() USER() 返回当前登录的用户
及主机名
CURRENT_USER() 用于返回当前登录的用户及主机名
SYSTEM_USER() 用于返回当前登录的用户及主机名

(5) 查看指定字符串的字符集的函数:CHARSET(str) CHARSET(str) 用于查看字符串 str 的字符集
(6) 查看指定字符串的排列方式的函数:COLLATION(str) COLLATION(str) 用于查看字符串 str 的字符排列方式
(7) 获取最后一个自动生成的 ID 值得函数:LAST_INSERT_ID() LAST_INSERT_ID() 用于获取最后一个自动生成的
ID 值


六.加密/解密函数



(1) 加密函数:PASSWORD(str) 、MD5(str) 、ENCODE(str, pswd_str) PASSWORD(str) 从明文密码 str 计算并返 回加密后的密码字符串,当参数为 NULL 时,返回 NULL

​ MD5(str) 为字符串 str 算出一个 MD5 128 比特校验和

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
img

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

个自动生成的 ID 值得函数:LAST_INSERT_ID() LAST_INSERT_ID() 用于获取最后一个自动生成的
ID 值


六.加密/解密函数



(1) 加密函数:PASSWORD(str) 、MD5(str) 、ENCODE(str, pswd_str) PASSWORD(str) 从明文密码 str 计算并返 回加密后的密码字符串,当参数为 NULL 时,返回 NULL

​ MD5(str) 为字符串 str 算出一个 MD5 128 比特校验和

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-vOArtzEj-1712851846927)]
[外链图片转存中…(img-L15DRAvQ-1712851846928)]
[外链图片转存中…(img-unu9zahL-1712851846928)]
[外链图片转存中…(img-zS2yXlWY-1712851846929)]
[外链图片转存中…(img-CHx6A7aQ-1712851846929)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
[外链图片转存中…(img-UktOTZqm-1712851846929)]

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

[外链图片转存中…(img-acx847n5-1712851846930)]

给大家整理的电子书资料:

[外链图片转存中…(img-QLAFItGH-1712851846930)]

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-OKtP9jp5-1712851846930)]

  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值