数据库(Database),简称db
mariadb=mysql
常见的数据库:mysql、oracle、高斯(Gauss)、redis、sqlserver、SQLite、HBase
一、SQL(Structured Query Language):结构化查询语言
1、作用:用于访问和处理数据库的标准计算机语言
2、语法特点:
(1)SQL对关键字的大小不敏感(针对windows)
(2)SQL语句可以单行或者多行书写,每行以分号结束
(3)SQL注释
3、mysql基本操作-ddl
(1)对数据库的基本操作
功能 | SQL |
---|---|
show databases; | 查看所有的数据库 |
create database [if not exists] mydb1 [charset=utf8]; | 创建数据库 |
use mydb1; | 切换库 |
select database(); | 显示当前所在库 |
drop database [if exists] mydb1; | 删除数据库 |
(2)对数据库的常用操作-创建表
创建表格式:
create table [if not exists] 表名 (
字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
) [表的一些设置];
create table emp(
eid int(1) comment '员工编号',
ename varchar(1) comment '员工姓名'
);
insert into emp values
(-2147483648,'A'),
(21333,'B');
select * from emp;
注:
(1)常见的数据类型有:
①数值类型
类型 | 大小 | 用途 |
---|---|---|
tinyint | 1byte | 小整数值 |
int或integer | 4byte | 大整数值 |
double | 8byte | 浮点数值 |
tinyint范围:[0,255]
int范围:[-2147483648,2147383647]
②日期和时间类型
类型 | 格式 | 用途 |
---|---|---|
date | YYYY-MM-DD | 日期值 |
datetimestamp | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
timestamp | YYYYMMDDHHMMSS | 混合日期和时间值,时间戳 |
③字符串类型’
char-定长
varchar-变长
如果是字符串类型,会有宽度的限制,宽度填多少就代表字符串有多长
如果是数值类型,比如INT(1),1不代表数据的长度,如果插入了大于显示宽度的值,只要该值不超过该类型的取值范围,数值依然显示出来
(3)对表结构的常用操作
sql | 功能 |
---|---|
show tables | 查看当前库有哪些表 |
show create table emp; | 查看指定某个表的创建语句 |
desc 表名; | 查看表结构 |
drop table 表名; | 删除表 |
show tables;
show create table emp;
desc emp;
drop table emp;
4、mysql数据库基本操作-dml
DML是指数据操作语言,Data Mainpulation Language,用于对数据库表中记录进行更新、删除、插入等操作
关键字:
insert-插入
delete-删除
update-更新
(1)数据插入
语法格式:
#向表中指定某些列插入数据
insert into 表名 (列名1,列名2,列名3...)
values (值1,值2,值3...);
#向表中所有列插入数据
insert into 表名 values (值1,值2,值3...);
#向student表中sid name gender age birth 字段添加数据
insert into student
(sid,name,gender,age,birth)
values
(1001,'张三','男',20,'1994-12-01');
#向student表中所有字段添加数据
insert into student
values
(1002,'赵敏','女',18,'1995-12-03','上海');
#向student表中所有字段添加多行数据
insert into student
VALUES
(1003,'张三丰11','男',88,'1918-08-13','北京'),
(1004,'张三丰111','男',36,'1983-7-11','北京');
注:以上两种格式均可,SQL语句以分号结尾,可以在一条insert语句中同时插入多个列表值,values只需要写一次,括号之间用逗号隔开
(2)数据修改
语法格式:
update 表名 set 字段名 = 值,字段名 = 值...;
update 表名 set 字段名 = 值,字段名 = 值... where 条件;
#将所有学生的地址修改为重庆
update student set address = '重庆';
#将sid为1004的学生地址修改为北京
update student set address = '北京' where sid = 1004;
#将sid为1004的学生地址修改为beijing并且性别修改为男
update student
set address = 'beijing',gender = '男'
where sid = 1004;
(3)数据删除
语法格式:
delete from 表名 [where 条件];
truncate table 表名
或者
truncate 表名
#删除sid为1004的学生数据
delete from student where sid = 1004;
#删除表所有数据
delete from student;
#再添加两条数据
insert into student
values
(1003,'张三丰11','男',88,'1918-08-13','北京'),
(1004,'张无忌1','男',36,'1983-07-11','北京');
#清空表数据
truncate student;
注:delete和truncate原理不同,delete只删除内容,而truncate类似drop table再create table,可以理解将整个表删除,然后再创建该表
5、mysql约束
何为约束,constraint,约束实际上就是表中数据的限制条件
作用:为了保证表中记录的完整性和有效性,比如用户表的手机号不能为空,身份证号不能重复
分类:
(1)主键约束(primary key) PK
(2)自增长约束(auto_increment)
(3)非空约束(not null)
(4)唯一性约束(unique)
(5)默认约束(default)
(6)零填充约束(zerofill)
(7)外键约束(foregin key)FK
(1)主键约束
可以加到某个列上,也可以加到多个列上
①概念:
a.主键约束相当于唯一约束和非空约束的组合,即主键约束的列不允许重复,也不允许出现空值
b.每个表最多允许一个主键
②添加单列主键
a.在定义字段的同时指定主键
语法格式:
create table 表名(
...
<字段名> <数据类型> primary key,
...
)
INSERT INTO emp1
(name,dept_id,salary)
VALUES
('张三',8801,3600);
#Field 'eid' doesn't have a default value
#设置了主键,该字段必须要给值
insert into emp1
values
(60051,'张三丰',5003,5000)
b.在定义完字段之后指定主键
语法格式:
create table 表名(
...
[constraint <约束名>] primary key(字段名)
);
create table emp2(
eid int comment '编号',
name varchar(20) comment '姓名',
dept_id int comment '部门编号',
salary double comment '工资',
constraint pk1 primary key(eid)
);