mysql基础

本文介绍了如何使用SQL进行数据库的基本操作,如创建、连接、查询、更新和删除数据,以及事务处理的概念,包括事务的提交和回滚。通过示例展示了在数据库中创建表、插入数据、更新记录以及删除记录的过程,并探讨了转账操作中事务处理的重要性,确保数据的一致性和完整性。
摘要由CSDN通过智能技术生成

复习

# 作业:
# 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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值