创建数据库
create database [if not exists] 数据库名
- 如果使用if not exists关键字,则当指定的数据库名存在时,不创建数据库。如果不使用if not exists 关键字,当创建的数据库名存在时,将产生错误。
显示创建数据库
show create database 数据库名
删除数据库
drop database
使用数据库
use database
数据库当中最基本的单元是表:table
数据库当中是以表格的形式表示数据的。
任何一张表都有行和列:
行(row):被称为数据、记录。
列(column):被称为字段
查看某个数据库下的表
Show table
SQL语句分类
DQL:数据查询语言(凡是带有select 关键字的都是查询语言)
DML:数据操作语言(凡是对表当中的数据进行增删改的都是DML)
Insert 增
Delete 删
Update改
主要是操作表中的数据data
DDL:数据定义语言
凡是带有create drop alter的都是DDL
DDL主要操作的是表的结构。不是表中的数据。
Create:新建,等同于增
Drop:删除
Alter:修改
这个增删改和DML不同,这个主要是对表中的结构进行操作。
TCL:事务控制语言
包括:事务提交:commit、事务回滚:rollback
DCL:数据控制语言
授权grant 、撤销权限revoke。。。。。
查看表中的数据:select *from 表名
不看表中的数据,只看表的结构,有一个命令:
Desc 表名
查询一个字段
Select 字段名 from 表名;
其中要注意:
Select 和 from 都是关键字。
字段名和表名都是标识符。
强调:
对于SQL语句来说,是通用的。
所有的SQL语句以“;”结尾。
另外SQL语句不区分大小写,都行。
创建数据库
create datebase [if not exists] 数据库名
如果使用if not exists 关键字,则当指定的数据库名存在时,不创建数据库。如果不使用if not exists 关键字,当创建的数据库名存在时,将产生错误。
show create database XXX 显示创建的数据库。
drop database 删除数据库
一、E-R模型由实体、属性和关系三个基本要素构成
二、主键有以下两个特征:1、表的主键可以由一个字段构成,也可以由多个字段构成(这种情况称为复合主键)。2、数据库表中主键由多个字段构成时,每个字段的值不能取NULL值。
约束类型
约束 | 说明 |
NOT NULL | 非空约束,指定某列的所有行数据不能包含空值 |
UNIQUE | 唯一性约束,指定列或者列的组合的所有行数据必须唯一 |
PRIMARY KEY | 主键约束,表的每一行的唯一性标识,指定列或者列的组合的所有行数据必须唯一 |
FOREIGN KEY | 外键约束,在列及引用列上建立的一种强制依赖关系 |
CHECK | 检查性约束,在列上指定一个必须满足的条件 |
要定义表的结构,需要设计表由哪些列组成,指定列的名称和数据类型。mysql的数据类型包括数值类型、日期和时间类型和字符串类型等。
1 创建表
create table 表名(
字段名1 数据类型 [约束条件],
。。。
[其他约束条件],
[其他约束条件]
)其他选项(例如存储引擎、字符集等选项)
)
例如
create table student ( --学生表
xh char(4),--学号
xm varchar(10),--姓名
sex char(2),--性别
birthday date,--出生日期
sal double(7,2), --奖学金
studentcid int(2) --学生班级号
)
2 修改表名
ALTER TABLE 旧表名 RENAME TO 新表名
3 往表插入数据(增删改)
插入数据
3.1 #列名与值一一对应即可,顺序可以与表中的顺序不一致
insert into 表名(列名,列名……)
values(列名值,列名值……);
3.2值与列一一对应(默认插入所以数据)
insert into 表名
values(列名值,列名值……);
3.3 批量插入
insert into 表名
values(列名值,列名值……),
values(列名值,列名值……),
values(列名值,列名值……),……
删除表数据
- PRIMARY KEY,指定字段为主键。
- AUTO_INCREMENT,指定字段为自动增加字段。
- INDEX,为字段创建索引。
- NOT NULL,字段值不允许为空。
- NULL,字段值可以为空。
- COMMENT,设置字段的注释信息。
- DEFAULT,设置字段的默认值。
复制表
修改表
修改约束条件
MySQL函数概述
常用函数分类
-
- 数学函数
- 字符串函数
- 日期和时间函数
- 流程控制函数
- 其他函数
数学函数
ABS(x):返回x的绝对值;
SQRT(x):返回非负数x的平方根;
PI():返回圆周率;
MOD(x,y)或%:返回x被y除的余数;
CEIL(x)、CEILING(x):返回大于或者等于x的最小整数值;
FLOOR(x):返回小于或者等于x的最大整数值;
ROUND(x,y):返回保留小数点后面y位,四舍五入的整数;
TRUNCATE(x,y):返回被舍弃的小数点后y位的数字x;
RAND():每次产生不同的随机数;
SIGN(x):返回参数的符号;
POW(x,y)和POWER(x,y): 返回x的y次乘方的结果值;
EXP(x):返回以e为底的x乘方后的值;
LOG(x):返回x的自然对数,x相对于基数e的对数;
LOG10(x):返回x的基数为10的对数;
RADIANS(x):将参数x由角度转化为弧度;
DEGREES(x):将参数x由弧度转化为度。
SIN(x):返回x正弦,其中x为弧度值;
ASIN(x)返回x的反正弦,即正弦为x的值;
COS(x):返回x的余弦;
ACOS(x):返回x反余弦
TAN(x):返回x的正切;
ATAN(x)返回x的反正切
字符串函数
CHAR_LENGTH(str):返回字符串str的所包含字符个数;
LENGTH(str):返回字符串str的长度;
CONCAT(s1,s2,...): 字符串连接;
CONCAT_WS(x,s1,s2,…):字符串连接, x是其它参数的分隔符;
INSERT(s1,x,len,s2) :返回字符串s1,s1中插入字符串s2;
LOWER (str)|LCASE (str):将字符串全部转换成小写字母;
UPPER(str)|UCASE(str):将字符串全部转换成大写字母;
LEFT(s,n):返回最左边指定长度的字符;
RIGHT(s,n):返回最右边指定长度的字符;
LPAD(s1,len,s2)| RPAD(s1,len,s2) :填充字符串函数;
TRIM(s1 FROM s)|LTRIM(s)|RTRIM(s):删除空格函数;
REPEAT(s,n):重复生成字符串函数;
SPACE(n):返回一个由n个空格组成的字符串;
REPLACE(s,s1,s2):字符串替换函数;
STRCMP(s1,s2):比较字符串大小函数;
SUBSTRING(s,n,len):获取子串函数;
LOCATE(str1,str)|POSITION(str1 IN str)|INSTR(str, str1):匹配子串开始位置函数;
REVERSE(s):将字符串s反转;
ELT(N,字符串1,字符串2,字符串3,…):返回指定位置函数;
日期和时间函数
CURDATE()和CURRENT_DATE() :获取当前日期函数;
NOW():返回服务器的当前日期和时间;
CURTIME():返回当前时间,只包含时分秒;
UTC_DATE():返回世界标准时间日期函数;
UTC_TIME():返回世界标准时间函数;
TIMEDIFF(expr1, expr2):返回两个日期相减相差的时间数;
DATEDIFF(expr1, expr2):返回两个日期相减相差的天数;
DATE_ADD(date,INTERVAL expr type):日期加上一个时间间隔值;
DATE_SUB(date,INTERVAL expr type):日期减去一个时间间隔值;
DATE(date)、TIME(date)、YEAR(date):选取日期时间的各个部分:
EXTRACT(unit FROM date):从日期中抽取出某个单独的部分或组合;
DAYOFWEEK(date) 、DAYOFMONTH(date) 、DAYOFYEAR(date):返回日期在一周、一月、一年中是第几天
DAYNAME、MONTHNAME:返回日期的星期和月份名称;
DATE_FORMAT(date,format):格式化日期;
TIME_FORMATE(time,formate):格式化时间;