MySQL的sql语句分类汇总
第⼀类语句:与数据库相关的语句
1.创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification] ...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
说明:
IF NOT EXISTS:判断当前系统中是否有要创建的这个数据库,如果有的话,不再执⾏创建,⽽且不会报错
CHARACTER SET:指定当前数据库所采⽤字符类型(utf8)
COLLATE:指定排序规则
例⼦:
CREATE DATABASE IF NOT EXISTS jobs DEFAULT CHARACTER SET utf8
2.删除数据库
DROP DATABASE [IF EXISTS] db_name
IF EXISTS:判断当前系统中是否有要删除的这个数据库,如果有执⾏删除操作,如果没有不再执⾏删除操作,⽽且不会报错
例⼦:DROP DATABASE IF EXISTS test;
3.修改数据库
这⾥往往仅仅是修改数据库中的字符集类型和排序规则(不能修改修改数据库名)
ALTER DATABASE [db_name] alter_specification ...
alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
例⼦:修改test1的字符集为utf8
ALTER DATABASE test1 DEFAULT CHARACTER SET utf8;
修改数据库名称:
先对要修改名称的数据库做备份,然后新建⼀个数据库,库名就是新的名字,然后将备份的数据还原到这个新库中4.更新数据字典
ALTER DATABASE db_name UPGRADE DATA DIRECTORY NAME
第⼆类语句:与表相关的语句
1.新建表
加拿大起诉吴亦凡⽅法⼀:直接创建⼀张新表
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
TEMPORARY:该选项表⽰所创建的是⼀张临时表,表是在内存中
create_definition:
col_name column_definition
| PRIMARY KEY (col_name1, )
| {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ...
| [CONSTRAINT UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ...
| {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ...
| [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition
| CHECK (expr)
table_option:
AUTO_INCREMENT [=] value <<< 指定主键从⼏开始⾃增
| ENGINE [=] engine_name <<< 指定表所使⽤的存储引擎
| [DEFAULT] CHARACTER SET [=] charset_name <<< 指定当前表的字符集(不指定会继承)
| CHECKSUM [=] {0 | 1} <<< 指定是否对插⼊的数据做校验(可以保证数据⼀致,但是会带来额外的系统开销) | [DEFAULT] COLLATE [=] collation_name <<< 指定当前表的排序规则(不指定会继承)
| COMMENT [=] 'string' <<< 指定当前表的描述说明信息
| DELAY_KEY_WRITE [=] {0 | 1} <<< 延迟键写⼊,推迟重建索引的间隔
| MAX_ROWS [=] value
| MIN_ROWS [=] value
| UNION [=] (tbl_name[,tbl_name]...) <<< 做表联合
| TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}] <<< 定义表空间
| ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} <<< 定义表格式
例⼦:创建⼀张表,id为主键、name长度为30,age为整型
CREATE TABLE tb1 (id int PRIMARY KEY, name char(30), age int(3))
CREATE TABLE tb2 (id int, name char(30), age int(3), PRIMARY KEY(id))
例⼦:创建⼀张表,id和name构成联合主键、name长度为30,age为整型
CREATE TABLE tb2 (id int, name char(30), age int(3), PRIMARY KEY(id,name))
⽅法⼆:根据现有表创建新表,⽽且新表中的数据也是来⾃于现有表
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options]
[partition_options]
[IGNORE | REPLACE]
[AS] query_expression
mysql语句分类>菜鸟json解析例⼦: CREATE TABLE new_tb AS SELECT * FROM old_tb;
注意:这种操作在系统看来是不安全的,如果要使⽤这种⽅法创建表需要修改配置⽂件将
对mongodb的认识gtid-mode = on改为off
enforce-gtid-consistency= 1改为0
⽅法三:根据现有表创建新表,但是仅仅有表结构
CREATE TABLE [IF NOT EXISTS] tbl_name LIKE old_tbl_name
例⼦:基于mysql.user表的表结构创建新表
CREATE TABLE tb01 LIKE mysql.user;
2.删除表
删除表简单实⽤DROP命令即可,但要注意做好指定。
DROP TABLE [IF EXISTS] tbl_name [, tbl_name]... [CASCADE]
说明:
CASCADE:级联删除
3.修改表结构(字段、属性、限制、约束、索引、键…)
格式:
ALTER TABLE tbl_name
[alter_specification [, alter_specification] ...]
[partition_options]
①修改字段的定义
1. 删除字段
DROP col_name
例⼦:删除age字段
ALTER TABLE tb1 DROP age;
2. 添加字段
ADD col_name column_definition [FIRST | AFTER col_name]
例⼦:
# 在age字段后添加⼀个新的字段school
ALTER TABLE tb1 ADD school CHAR(10) AFTER age;
# 在最前⾯插⼊字段job
ALTER TABLE tb1 ADD job CHAR(20) NOT NULL FIRST;
# 在末尾添加⼀个新字段phone
ALTER TABLE tb1 ADD phone int(10);
3. 修改字段名称
CHANGE old_col_name new_col_name column_definition [FIRST|AFTER col_name]例⼦: ALTER TABLE tb1 CHANGE job jobs char(30) not null;
4. 修改字段的约束和属性,调整字段位置
MODIFY col_name column_definition [FIRST | AFTER col_name]
例⼦:ALTER TABLE tb1 MODIFY name varchar(50) NOT NULL DEFAULT 'zx';
注意⽆法修改字段名称
ALTER TABLE tb1 MODIFY name varchar(50) AFTER age;
5. 添加删除索引
ADD index [索引类型] (字段1,字段2...) [options]
例⼦:将索引添加(删除)到 name字段上
ALTER TABLE tb1 ADD(DROP) INDEX (name);
查看表中的索引
SHOW INDEXES FROM tb1;
注意:索引不是越多越好
①修改字段约束
#主键约束
| ADD [CONSTRAINT [symbol]] PRIMARY KEY
[index_type] (index_col_name,...) [index_option] ...
#唯⼀约束
| ADD [CONSTRAINT [symbol]]
UNIQUE [INDEX|KEY] [index_name]
[index_type] (index_col_name,...) [index_option] ...
#唯⼀约束要建⽴在索引上,也就是对某字段设置唯⼀约束时,该字段要是索引。
ubuntu安装cuda关于主键(删除、禁⽤、启⽤)
DROP PRIMARY KEY #删除主键
{DISABLE|ENABLE} KEYS #禁⽤和启⽤主键
4.修改表名
#⽅法1:
ALTER TABLE 表名 RENAME [TO|AS] 新表名
ALTER TABLE user10 RENAME TO user11;
springcould阿里巴巴⽅法2:
RENAME TABLE 表名 TO 新表名;这⾥⾯的TO不可以省略
RENAME TABLE user11 TO user10;
5.指定表中的内容按照哪个字段进⾏排序
注意:如果表中有索引或者主键,那么⽆法按照指定的字段排序
ORDER BY col_name [, col_name] ...
6.修改表所使⽤的字符集类型
CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
7.向表中插⼊数据
INSERT INTO tb1(name,id,age) VALUES('dong',1,23);
修改表中的数据
将name为zx的年龄修改为25
UPDATE tb01 set age=25 WHERE name='zx';
第三类语句:简单的查询语句
简单查询格式
SELECT 字段名... FROM 表名 [条件] [选项]
例⼦:查询t09中的全部数据
> SELECT * FROM t09;
例⼦:查询t09中的id
> SELECT id FROM t09;
例⼦:查看所有id⼤于5的记录
> SELECT * FROM t09 WHERE id>5
例⼦:查看所有id⼤于5的记录的中的name字段
> SELECT name FROM t09 WHERE id>5
条件查询、组合条件查询
条件表达⽅式释义
=、<、>、>= 、<=等于、⼩于、⼤于、⼤于等于、⼩于等于
条件表达⽅式释义!=、<>不等于
is null为空is not null不为空between…and…在…和…之间like …结合通配符
RLIKE结合正则组合条件查询关键字:and、or、not
排序、限制输出记录的条数
order by 字段 [desc|asc] 根据指定字段进⾏降序或升序排列
limit num:仅仅显⽰num条记录
limit m,n:意思是跳过m个记录向后取n条数据
⽰例
案例:将年龄在20-25的⽤户名和⽤户id显⽰出来
mysql> select name,stuid,age from students where age>=20 and age<=25;
mysql> select name,stuid,age from students where age between 20 and 25;
案例:将年龄在⼩于20,或者⼤于25的⽤户名和⽤户id显⽰出来
select stuid,name,age from students where age<20 or age>25;
案例:显⽰⽤户名是以S为开头的⽤户名和年龄
mysql> select name,age from students where name like 'S%';
案例:显⽰⽤户名是以Y为开头,且年龄是19的⽤户
mysql> select name,age from students where name like 'Y%' and age=19;
案例:显⽰⽤户名是以Y为开头,且年龄⼩于20的⽤户
mysql> select name,age from students where name like 'Y%' and age<20;
案例:显⽰所有⽤户的⽤户名和年龄
mysql> select name,age from students;
案例:显⽰所有⽤户的⽤户名和年龄,要求按照年龄排序(从⼤到⼩排)
mysql> select name,age from students order by age desc;
案例:显⽰所有⽤户的⽤户名和年龄,要求仅仅显⽰年龄最⼤的三个⽤户
mysql> select name,age from students order by age desc limit 3;
案例:统计students表有多少⾏
mysql> select count(*) from students;
案例:显⽰年龄最⼤的⽤户的年龄
mysql> select max(age) from students;
⼤致汇总,如有不当之处欢迎指正。
-
-----做运维之前很矫情的⼩年轻-----
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论