(1)查看数据库、查看数据库版本:
(2)查看当前用户、查看所有用户:
(3)创建数据库:
(4)使用数据库:
(5)查看数据库信息,查看当前连接的数据库:
(6)删除数据库:
查看当前数据库下拥有的所有表:
查看数据库表属性定义:
创建学校数据库——班级表
班级表:class
语法:create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] )[存储引擎 字符集]; ==在同一张表中,字段名是不能相同 ==宽度和约束条件可选 ==字段名和类型是必须的
语法:
查看表结构,语法:
复制一个表结构的实现方法有两种:
方法一:在 create table 语句的末尾添加 like子句,可以将源表的表结构复制到新表中,语法格式如下:
方法二:在 create table 语句的末尾添加一个 select 语句,可以实现表结构的复制,甚至可以将源表的表记录拷贝到新表中。下面的语法格式将源表的表结构以及源表的所有记录拷贝到新表中:
(1)用户表:被用户创建和维护的一些表,包括了用户自己的信息
(2)数据字典表(视图):被数据库系统创建和维护的一些表,包括了数据库的信息
数据库字典,由 information_schema 数据库负责维护:
tables-存放数据库里所有的数据表、以及每个表所在数据库
schemata-存放数据库里所有的数据库信息
views-存放数据库里所有的视图信息
columns-存放数据库里所有的列信息
triggers-存放数据库里所有的触发器
routines-存放数据库里所有存储过程和函数
key_column_usage-存放数据库所有的主外键
table_constraints-存放数据库全部约束
statistics-存放了数据表的索引
作用:用于保证数据的完整性和一致性
说明:
1. 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值
2. 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值
3. 是否是key
主键 primary key
外键 forengn key
索引 (index,unique...)
设置主键约束 PRIMARY KEY
primary key字段的值是不允许重复,且不允许不NULL(UNIQUE + NOT NULL)
单列做主键
多列做主键(复合主键)
单列做主键:
方法一:
方法二:
复合主键: service表:
主键: host_ip + port = primary key
(1)修改表名
(2)增加字段
ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…], ADD 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] FIRST;
ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;
(3)删除字段
ALTER TABLE 表名 DROP 字段名;
(4)修改字段
ALTER TABLE 表名 MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
(1)复制表结构+记录 (key不会复制: 主键、外键和索引)
(2)只复制表结构
(3)复制表结构,包括Key
在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句。
DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。
其中第二条记录中的TABLE是可选的。
如果要删除表中的部分记录,只能使用DELETE语句。
简单查询
避免重复DISTINCT
通过四则运算查询
CONCAT() 函数用于连接字符串
单条件查询
关键字BETWEEN AND
关键字IS NULL
关键字IN集合查询
关键字LIKE模糊查询,通配符’%’或‘_’
查询排序,按单列排序
限制查询的记录数LIMIT N
使用集合查询
分组查询GROUP BY关键字和GROUP_CONCAT()函数一起使用
使用正则表达式查询REGEXP ''
多表的连接查询(先建立如下两个测试表)
交叉连接: 生成笛卡尔积,它不使用任何匹配条件
内连接: 只连接匹配的行
外连接语法: SELECT 字段列表 FROM 表1 LEFT|RIGHT JOIN 表2 ON 表1.字段 = 表2.字段;
外连接之左连接: 会显示左边表内所有的值,不论在右边表内匹不匹配
找出所有员工及所属的部门,包括没有部门的员工
外连接之右连接: 会显示右边表内所有的值,不论在左边表内匹不匹配
找出所有部门包含的员工,包括空部门
全外连接: 包含左、右两个表的全部行
复合条件连接查询 示例1:以内连接的方式查询employee和department表,并且employee表中的age字段值必须大于25
示例2:以内连接的方式查询employee和department表,并且以age字段的升序方式显示
子查询 子查询是将一个查询语句嵌套在另一个查询语句中; 内层查询语句的查询结果,可以为外层查询语句提供查询条件; 子查询中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等关键字; 还可以包含比较运算符:= 、 !=、> 、<等