数据库
概念:存储数据,管理数据的仓库。
分类:
- 关系型数据库:Oracle、MySQL、SQLServer、Access
- 非关系型数据库:MongDB、Redis等
数据库结构
库-->表-->记录(行)-->字段(列)
SQL语句(SQL不区分大小写)
定义:结构化查询语言(Structured Query Language)
分类:
DML:数据操纵语言;
如:insert,delete,update,select(插入、删除、修改、检索)简称CRUD操新增Create、查询Retrieve、修改Update、删除Delete
DDL:数据库定义语言;
如:create table之类
DCL:数据库控制语言;
DQL:数据库查询语言。
数据库常用操作
建库:
create database cgb2106 default character set utf8;
删库:
drop database cgb2106;
查看所有库:
show database;
表的常用操作:
创建表:
- 创建tb_door表,有id,door_name,tel字段
create table tb_door(
id int primary key auto_increment,
door_name varchar(100),
tel varchar(50)
)
删除表
drop table tb_door
修改表
- 添加列
alter table tb_door add column money numeric(7,2)
查看表
show tables
表记录的常用操作
插入记录:
insert into tb_door values(null,"永和大王1店",666)
insert into tb_door values(null,"永和大王2店",888)
查询记录
select * from tb_door
修改记录
- 修改tb_door表中id为1的记录
update tb_door set tel = 555 where id = 1
删除记录
- 删除tb_door表中id为2的数据
delete from tb_door where id=2
约束
主键约束
- primary key
主键自增策略:当主键为数值类型时,为了方便维护,可以设置主键自增策略(auto_increment),设置了主键自增策略后,数据库会在表中保存一个AUTO_INCREMENT变量值,初始值为1,当需要id值,不需要我们指定值,由数据库负责从AUTO_INCREMENT获取一个id值,作为主键值插入到表中。而且每次用完AUTO_INCREMENT值,都会自增1.
例:
create table abc(
id int primary key auto_increment
)
非空约束
如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。
例:为password添加非空约束
create table abc(
password varchar(50) not null
)
唯一约束
如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(不能重复),但可以为空。
例:为username添加唯一约束
create table abc(
username varchar(50) unique
)
外键约束
默认约束
给指定字段设置默认值
CREATE TABLE f(
id INT PRIMARY KEY AUTO_INCREMENT,#主键,自动递增
sex VARCHAR(10) DEFAULT '男' #设置默认值
)
检查约束
给指定字段设置合法值的检查规则
CREATE TABLE g(
id INT PRIMARY KEY AUTO_INCREMENT,#主键,自动递增
age INT,
CHECK(age>0 AND age<200)#设置检查
)
#外键:通过指定的SQL语句描述了两张表的关系
#约束:子表添加记录时id必须在取自主表
#删除主表记录时,必须没有被子表使用着
#怎么确定谁是子表谁是主表?子表中有外键的SQL
CREATE TABLE tb_user(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
sex VARCHAR(10)
)
CREATE TABLE tb_user_address(
user_id INT PRIMARY KEY AUTO_INCREMENT,
address VARCHAR(20),
#表明和哪张表的哪个字段有关系
#foreign key(本表的主键) references 关联表(主键)
FOREIGN KEY(user_id) REFERENCES tb_user(id)
)
基础函数
lower
SELECT 'ABC',LOWER('ABC') from dept --数据转小写
upper
select upper(dname) from dept --数据转大写
length
select length(dname) from dept --数据的长度
substr
SELECT dname,SUBSTR(dname,1,3) FROM dept --截取[1,3]
concat
select dname,concat(dname,'123') X from dept --拼接数据
replace
select dname,replace(dname,'a','666') X from dept --把a字符替换成666
ifnull
select ifnull(comm,10) comm from dept2 #判断,如果comm是null,用10替换
round & ceil & floor
round四舍五入,ceil向上取整,floor向下取整
–直接四舍五入取整
select comm,round(comm) from emp
–四舍五入并保留一位小数
select comm,round(comm,1) from emp
–ceil向上取整,floor向下取整
select comm,ceil(comm) ,floor(comm) from emp
now
--获取当前时间
select now() 年月日,时分秒
select curdate() 年月日
select curtime() 时分秒
year&month&day
select year(now()),month(now()),day(now())
hour()&minute()&second()
select hour(now()),minute(now()),second(now())
转义字符
select 'ab'cd' -- 单引号是一个SQL语句的特殊字符
select 'ab\'cd' --数据中有单引号时,用一个\转义变成普通字符