复习
# 作业:
# 1 断开数据库连接
# Ctrl C , EXIT
# 2 连接到数据库
mysql -uroot -p
# 3 查看当前连接下的数据库
show databases;
# 4 新建数据库 student
DROP DATABASE IF EXISTS student;
CREATE DATABASE student charset='utf8';
# 5 使用数据库student
USE student;
# 6 查看当前使用的数据库
SELECT DATABASE();
# 7 新建学生表 stu 里面包含列
DROP TABLE IF EXISTS stu;
CREATE TABLE stu(
id INT PRIMARY KEY ,
name VARCHAR(25) NOT NULL ,
age tinyint,
addr VARCHAR(50)
)charset = "utf8";
# id INT 主键,
# name varchar(25) 非空,
# age TINYINT ,
# addr(住址) varchar(50)
# 8 写入 16条数据
INSERT INTO stu VALUES(1,'Tom',10,'北京市西城区莲花大道888号');
INSERT INTO stu VALUES(
2,'Tom1',10,'北京市西城区莲花大道888号')
,(3,'Tom2',10,'北京市西城区莲花大道888号')
,(4,'Tom3',10,
'北京市西城区莲花大道888号')
,(5,'Tom4',10,
'北京市西城区莲花大道888号'),
(6,'Tom5',10,
'北京市西城区莲花大道888号')
,(7,'Tom6',10,
'北京市西城区莲花大道888号')
,(8,'Tom7',10,
'北京市西城区莲花大道888号');
# 1,'Tom',10,'北京市西城区莲花大道888号'
# 2,'Tom1',10,'北京市西城区莲花大道889号'
# ...
SELECT * FROM stu;
# 9 修改所有人的姓名为'周星驰'
UPDATE stu SET name = '周星驰';
# 10 修改所有人的住址为'深圳市龙华新区龙华街道三联社区富联二区188栋606'
UPDATE stu SET addr = '深圳市龙华新区龙华街道三联社区富联二区188栋606';
# 11 修改第6条记录的姓名为'周润发'
UPDATE stu SET name = '周润发'
WHERE id = 6 ;
# 12 修改第7条记录的姓名为'洪金宝',住址为
# '香港特别行政区皇后大道666号'
UPDATE stu SET
name = '洪金宝',
addr = '香港特别行政区皇后大道666号'
WHERE id = 7;
#删除表中数据
# 删除表中某一行数据
#删除第8条记录
DELETE FROM stu WHERE id = 8 ;
#DELETE 删除
# FROM 从
#stu 表名
#WHERE 在哪里 条件
# id = 8
# 删除姓名是'洪金宝'的记录
DELETE FROM stu WHERE name = '洪金宝' ;
#删除stu表中所有记录
#delete是删除数据的
DELETE FROM stu ;
#查看stu表结构
DESC stu;
# 彻底删除表stu
DROP TABLE stu;
DROP TABLE IF EXISTS stu;
#删除表 如果stu表存在
#DROP 删除 完整删除
# 删除数据库
DROP DATABASE student;
DROP DATABASE IF EXISTS student;
存到银行的钱其实在银行就是数据库中的数据
转账
张三给李四转1000元
张三办理业务转账1000个李四
业务办理过后有两种情况
要不成功 要不失败
如果成功 张三账号里面减1000,李四账号加1000 把这种情况称为事务,需要进行提交 commit
假如转账不成功 不能从张三的账号扣钱,需要对转账这个事务做 回滚处理 rallback
同样在数据库进行了数据的操作,如果确认没有问题,也需要提交.
#删除表中数据
# 删除表中某一行数据
#删除第8条记录
DELETE FROM stu WHERE id = 8 ;
#DELETE 删除
# FROM 从
#stu 表名
#WHERE 在哪里 条件
# id = 8
# 删除姓名是'洪金宝'的记录
DELETE FROM stu WHERE name = '洪金宝' ;
#删除stu表中所有记录
#delete是删除数据的
DELETE FROM stu ;
#查看stu表结构
DESC stu;
# 彻底删除表stu
DROP TABLE stu;
DROP TABLE IF EXISTS stu;
#删除表 如果stu表存在
#DROP 删除 完整删除
# 删除数据库
DROP DATABASE student;
DROP DATABASE IF EXISTS student;
SQL 查询语句
准备3张表
地区表 s_region
primary key 主键 唯一且非空
unique 唯一约束 要求所在列的值必须唯一,不能重复
CREATE TABLE s_region
(id int (7)
primary key ,
name VARCHAR(50)
unique
);
INSERT INTO s_region VALUES (
1, 'North America');
INSERT INTO s_region VALUES (
2, 'South America');
INSERT INTO s_region VALUES (
3, 'Africa / Middle East');
INSERT INTO s_region VALUES (
4, 'Asia');
INSERT INTO s_region VALUES (
5, 'Europe');
部门表 s_dept
CREATE TABLE s_dept(
id int primary key ,
name VARCHAR(25) NOT NULL,
region_id int );
INSERT INTO s_dept VALUES (
10, 'Finance', 1);
INSERT INTO s_dept VALUES (
31, 'Sales', 1);
INSERT INTO s_dept VALUES (
32, 'Sales', 2);
INSERT INTO s_dept VALUES (
33, 'Sales', 3);
INSERT INTO s_dept VALUES (
34, 'Sales', 4);
INSERT INTO s_dept VALUES (
35, 'Sales', 5);
INSERT INTO s_dept VALUES (
41, 'Operations', 1);
INSERT INTO s_dept VALUES (
42, 'Operations', 2);
INSERT INTO s_dept VALUES (
43, 'Operations', 3);
INSERT INTO s_dept VALUES (
44, 'Operations', 4);
INSERT INTO s_dept VALUES (
45, 'Operations', 5);
INSERT INTO s_dept VALUES (
50, 'Administration', 1);
员工表 s_emp
CREATE TABLE s_emp
(id int primary key ,
last_name VARCHAR(25)
NOT NULL,
first_name VARCHAR(25),
userid VARCHAR(8),
start_date DATE,
comments VARCHAR(255),
manager_id int ,
title VARCHAR(25),
dept_id int,
salary double(11, 2),
commission_pct double(4, 2),
CONSTRAINT s_emp_userid_uk UNIQUE (userid),
CONSTRAINT s_emp_commission_pct_ck
CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20)));
INSERT INTO s_emp VALUES (
1, 'Velasquez', 'Carmen', 'cvelasqu',
'19900306', NULL, NULL, 'President',
50, 2500, NULL);
INSERT INTO s_emp VALUES (
2, 'Ngao', 'LaDoris', 'lngao',
'19900308', NULL, 1, 'VP, Operations',
41, 1450, NULL);
INSERT INTO s_emp VALUES (
3, 'Nagayama', 'Midori', 'mnagayam',
'19910617', NULL, 1, 'VP, Sales',
31, 1400, NULL);
INSERT INTO s_emp VALUES (
4, 'Quick-To-See', 'Mark', 'mquickto',
'19900407', NULL, 1, 'VP, Finance',
10, 1450, NULL);
INSERT INTO s_emp VALUES (
5, 'Ropeburn', 'Audry', 'aropebur',
'19900304', NULL, 1, 'VP, Administration',
50, 1550, NULL);
INSERT INTO s_emp VALUES (
6, 'Urguhart', 'Molly', 'murguhar',
'19910118', NULL, 2, 'Warehouse Manager',
41, 1200, NULL);
INSERT INTO s_emp VALUES (
7, 'Menchu', 'Roberta', 'rmenchu',
'19900514', NULL, 2, 'Warehouse Manager',
42, 1250, NULL);
INSERT INTO s_emp VALUES (
8, 'Biri', 'Ben', 'bbiri',
'19900407', NULL, 2, 'Warehouse Manager',
43, 1100, NULL);
INSERT INTO s_emp VALUES (
9, 'Catchpole', 'Antoinette', 'acatchpo',
'19920902', NULL, 2, 'Warehouse Manager',
44, 1300, NULL);
INSERT INTO s_emp VALUES (
10, 'Havel', 'Marta', 'mhavel',
'19910227', NULL, 2, 'Warehouse Manager',
45, 1307, NULL);
INSERT INTO s_emp VALUES (
11, 'Magee', 'Colin', 'cmagee',
'19900514', NULL, 3, 'Sales Representative',
31, 1400, 10);
INSERT INTO s_emp VALUES (
12, 'Giljum', 'Henry', 'hgiljum',
'19920118', NULL, 3, 'Sales Representative',
32, 1490, 12.5);
INSERT INTO s_emp VALUES (
13, 'Sedeghi', 'Yasmin', 'ysedeghi',
'19910218', NULL, 3, 'Sales Representative',
33, 1515, 10);
INSERT INTO s_emp VALUES (
14, 'Nguyen', 'Mai', 'mnguyen',
'19920122', NULL, 3, 'Sales Representative',
34, 1525, 15);
INSERT INTO s_emp VALUES (
15, 'Dumas', 'Andre', 'adumas',
'19911009', NULL, 3, 'Sales Representative',
35, 1450, 17.5);
INSERT INTO s_emp VALUES (
16, 'Maduro', 'Elena', 'emaduro',
'19920207', NULL, 6, 'Stock Clerk',
41, 1400, NULL);
INSERT INTO s_emp VALUES (
17, 'Smith', 'George', 'gsmith',
'19900308', NULL, 6, 'Stock Clerk',
41, 940, NULL);
INSERT INTO s_emp VALUES (
18, 'Nozaki', 'Akira', 'anozaki',
'19910209', NULL, 7, 'Stock Clerk',
42, 1200, NULL);
INSERT INTO s_emp VALUES (
19, 'Patel', 'Vikram', 'vpatel',
'19910806', NULL, 7, 'Stock Clerk',
42, 795, NULL);
INSERT INTO s_emp VALUES (
20, 'Newman', 'Chad', 'cnewman',
'19910721', NULL, 8, 'Stock Clerk',
43, 750, NULL);
INSERT INTO s_emp VALUES (
21, 'Markarian', 'Alexander', 'amarkari',
'19910526', NULL, 8, 'Stock Clerk',
43, 850, NULL);
INSERT INTO s_emp VALUES (
22, 'Chang', 'Eddie', 'echang',
'19901130', NULL, 9, 'Stock Clerk',
44, 800, NULL);
INSERT INTO s_emp VALUES (
23, 'Patel', 'Radha', 'rpatel',
'19901017', NULL, 9, 'Stock Clerk',
34, 795, NULL);
INSERT INTO s_emp VALUES (
24, 'Dancs', 'Bela', 'bdancs',
'19910317', NULL, 10, 'Stock Clerk',
45, 860, NULL);
INSERT INTO s_emp VALUES (
25, 'Schwartz', 'Sylvie', 'sschwart',
'19910509', NULL, 10, 'Stock Clerk',
45, 1100, NULL);
上述的三张表相互间存在一种关系,员工是属于某个部门的,而部门属于某个地区的,这种关系使用一种叫外键的约束可以实现
ALTER TABLE s_dept
ADD CONSTRAINT s_dept_region_id_fk
FOREIGN KEY (region_id) REFERENCES s_region (id);
上面的SQL 给s_dept表添加一个约束s_dept_region_id_fk 是一个外键约束,外键所在的列是region_id,它参照于s_region 中的列id,这种约束一般是一种主外键约束 外键参照于某个表的主键.s_dept表中的region_id列的值是参照s_region表中的id的值
ALTER TABLE s_emp
ADD CONSTRAINT s_emp_dept_id_fk
FOREIGN KEY (dept_id) REFERENCES s_dept (id);
```sql
ALTER TABLE s_emp
ADD CONSTRAINT s_emp_manager_id_fk
FOREIGN KEY (manager_id) REFERENCES s_emp (id);
工资等级表 s_salgrade
create table s_salgrade(
grade int(3) not null,
losal double(11,2) not null,
hisal double(11,2) not null
);
insert into s_salgrade values(1, 2000, 10000);
insert into s_salgrade values(2, 1500, 1999);
insert into s_salgrade values(3, 1200, 1499);
insert into s_salgrade values(4, 1000, 1199);
insert into s_salgrade values(5, 500, 999);
查询语句
DBA或者后端去设计数据库
查询s_emp表中的所有数据
# 查询s_emp表中的所有数据
# * 表示要查询的列/字段 * 代表所有的
SELECT *
FROM s_emp;
# 可以查询出s_emp表中所有数据,但是由于
#列太多,导致看起来不方便.有的时候需要
#查询特定的列
# 查询出s_emp表中员工的编号,姓名,职位
# 工资
#编号: id
#姓名: first_name
#职位: title
#工资: salary
SELECT id,first_name,title,salary
FROM s_emp;
# SELECT 列名1 , 列名2,...FROM 表名;
#能不能只查询一个列?
#查询s_emp表中员工的姓名
#查询出s_dept表中部门的名称
#查询出s_region表中的所有数据
#查询出s_emp表中员工的姓名和入职日期
SELECT first_name,start_date
FROM s_emp;
#查询出员工的姓名和年薪
# 年薪 = 月薪 * 12
SELECT first_name ,salary*12
FROM s_emp;
#起别名
# 使用as起别名
SELECT first_name AS '姓名',
salary*12 AS '年薪'
FROM s_emp;
SELECT first_name AS 'name',
salary*12 AS 'yearSal'
FROM s_emp;
#查询出员工的id,first_name,last_name
SELECT id,first_name,last_name
FROM s_emp;
#查询出员工的id,全名
# 尼古拉斯-凯奇 尼古拉斯 * 凯奇
# 把字符串拼接在一起的方法
# CONCAT(参数1,参数2)
# 单行输出结果
SELECT 1+1;
SELECT CONCAT("aa","bb");
# CONCAT(参数1,参数2,...)
SELECT CONCAT("aa","bb","cc");
SELECT CONCAT(66,66,66);
#查询出员工的id,全名
SELECT id, CONCAT(first_name,
last_name)
FROM s_emp;
#使用起别名的方法给concat()方法
#起一个别名'全名'
SELECT id, CONCAT(first_name,
last_name) AS '全名'
FROM s_emp;
SELECT id, CONCAT(first_name,
last_name) AS 'fullName'
FROM s_emp;
# 使用空格 起别名
SELECT id, CONCAT(first_name,
last_name) 'fullName'
FROM s_emp;
# 对输出结果first_name和 last_name
#之间使用空格隔开
SELECT id, CONCAT(first_name," ",
last_name) 'fullName'
FROM s_emp;
#对输出结果first_name和 last_name
#之间使用加个特殊符号
SELECT id, CONCAT(first_name," - ",
last_name) 'fullName'
FROM s_emp;