操作数据库表中字段
#DML语言
/*
数据操作语言
插入 insert
修改 update
删除 delete
*/
#一 插入语句
/*
语法
insert into 表名(列名,.....) values(值1,...)
*/
#1 插入值的类型与列的类型要一致或兼容
INSERT INTO `beauty`(`id`,`name`,`sex`,`borndate`,`phone`,`photo`,`boyfriend_id`)
VALUES(13,'赵丽颖','女','1992-5-12','15836452985',NULL,2)
SELECT * FROM `beauty`
#2 不可以为null的IE必须插入值 ,可以为null的列如何插入值
#方式2 为nullable可以不传值
INSERT INTO `beauty`(`id`,`name`,`phone`)
VALUES(14,'杨紫','1815165515')
#3列的顺序也可以交换 但列和值必须一致
#4可以省略列名 默认为所有列 且顺序与表中一致
INSERT INTO `beauty`
VALUES(15,'赵丽','女','1992-5-12','1582582985',NULL,2)
#方法二
/*
语法:
insert into 表名
set 列名=值,列名=值...
*/
INSERT INTO `beauty`
SET `id`=16,`name`='dddd',`phone`='15924665821'
#方式1支持一次插入多行方式二不支持
INSERT INTO `beauty`
VALUES(18,'赵丽','女','1992-5-12','1582582985',NULL,2),
(19,'赵丽','女','1992-5-12','1582582985',NULL,2),
(20,'赵丽','女','1992-5-12','1582582985',NULL,2)
#方式一支持子查询,方式二不支持
INSERT INTO `beauty`(`id`,`name`,`phone`)
SELECT 26,'dddaa','15239854562'
#二 修改语句
/*
1,修改 单表的记录
uodate 表名
set 列=新值,列=新值
where 筛选条件
2 , 修改多表的记录(补充)
update 表1 别名
inner left right join 表2 别名
on 筛选条件
set 列=新值,列=新值
*/
#修改`beauty`中姓赵的女神电话改为18231519795
UPDATE `beauty`
SET `phone`='18231519795'
WHERE `beauty`.`name` LIKE '赵%'
SELECT * FROM `beauty`
#修改多表的记录
#修改张无忌的女朋友的手机号为1523654815
UPDATE `boys`
INNER JOIN `beauty`
ON `beauty`.`boyfriend_id`=`boys`.`id`
SET `beauty`.`phone`='1523654815'
WHERE `boys`.`boyName`='张无忌'
#删除语句
/*
方式一:delete
语法
delete from 表名 where 筛选条件
方式二 truncate
语法:truncate table 表名
*/
#删除女神表中手机号中以9结尾的人
DELETE FROM `beauty` WHERE `phone` LIKE '%9'
TRUNCATE TABLE `boys`
#比较
/*
1 delete 可以加where条件,TRUNCATE table 不能加
2 truncate删除效率高
3 假如要删除的表中有自增长序列,用delete删除在插入,自增长序列的值从断点开始
而truncate 删除后再加入数据 自增长序列从1开始
4 truncate删除没有返回值 delete 删除有返回值
5 truncate删除不能回滚,delete删除可以回滚
*/
操作数据库和表
#DDL
/*
数据定义语言
库和表的管理
一,库的管理
创建,修改,删除
二,表的管理
创建,修改,删除
*/
#一,库的管理
#1 库的创建
/*
语法:
create database 库名
*/
CREATE DATABASE IF NOT EXISTS books
#2 库的修改
#直接修改数据库文件
#更改库的字符集
ALTER DATABASE books CHARACTER SET gbk
#3 库的删除
DROP DATABASE IF EXISTS books
# 二 表的管理
#1 表的创建
/*
create table 表名(
列名 列的类型 【(长度),约束】
列名 列的类型 【(长度),约束】
列名 列的类型 【(长度),约束】
)
*/
USE books
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT ,
`runoob_title` VARCHAR(100) ,
`runoob_author` VARCHAR(40) ,
`submission_date` DATE,
)
CREATE TABLE IF NOT EXISTS `author`(
`id` INT,
`au_name` VARCHAR(20),
`nation` VARCHAR(10)
)
#2 表的修改
#修改列名
ALTER TABLE `author` CHANGE COLUMN `salary` `pub` DATETIME
#添加列
ALTER TABLE `author` ADD COLUMN `salary` DOUBLE
#删除列
ALTER TABLE `author` DROP COLUMN `salary`
#修改表名
ALTER TABLE `runoob_tbl`RENAME TO niu
#3 表的删除
DROP TABLE `author`
#4 表的复制(结构)
CREATE TABLE nniu LIKE `niu`
#常见约束
/*
一种限制,用于限制表中数据,为了保证表中的数据的准确和可靠性
分类:六大约束
not null 非空 用于保证该字段的值不能为空 比如姓名,学号等
default 默认 用于保证该字段有默认值 比如性别
primary key 主键 用于保证该字段的值具有唯一性 比如学号,员工编号
unique 用于保证该字段的值具有唯一性,可以为空 比如座位号
check 检查约束(mysql不支持) 比如年龄 性别
foreign key 外键 用于限制两个表的关系
,用于保证该字段的值必须来自主表关联列的值
在从表添加外键约束,用于引用主表中某列的值
添加约束的时间:创建表时,
修改表时
添加约束的分类 :
列级约束
六大约束语法上都可以,但外链没哟效果
表级约束
除了非空
*/
#一 创建表时添加列级约束
CREATE TABLE IF NOT EXISTS People(
id INT PRIMARY KEY,
`name` VARCHAR(20) NOT NULL,
gender VARCHAR(1) CHECK(gender='男' OR gender ='女'),
seat INT UNIQUE
)
DROP TABLE IF EXISTS People
#创建表示添加表级约束
CREATE TABLE stu(
id INT,
stuname VARCHAR(25),
seat INT,
age INT,
gender VARCHAR(1),
CONSTRAINT pk PRIMARY KEY(id),
CONSTRAINT uq UNIQUE(stuname),
CONSTRAINT ck CHECK(gender='男' OR gender ='女')
)
#通用写法
CREATE TABLE IF NOT EXISTS uuser(
id INT PRIMARY KEY,
uuser_name VARCHAR(25) NOT NULL,
sex CHAR(1),
age INT DEFAULT 18,
seat INT UNIQUE,
major INT,
CONSTRAINT fk FOREIGN KEY(major) REFERENCES stu(id)
)
#主键和唯一的对比
/* 保证唯一性 是否允许为空 一个表中可以有多少个 是否允许组合
主键 √ × 至多有1个 √
唯一 √ √ 可以有多个 √
*/
#二 修改表时添加约束
/*
1 alter table 表名 modify column 字段名 字段类型 新约束
2 alter table 表名 add constraint 约束名 约束类型(字段名)
*/
#添加非空约束
ALTER TABLE uuser MODIFY COLUMN `uuser_name` VARCHAR(50) NOT NULL
#添加默认约束
ALTER TABLE uuser MODIFY COLUMN `age` INT DEFAULT 18
#添加主键
ALTER TABLE `uuser` MODIFY COLUMN `id` INT PRIMARY KEY
#三 修改表示删除约束
#1 删除非空约束
ALTER TABLE `uuser` MODIFY COLUMN `uuser_name` VARCHAR(50)
SHOW INDEX FROM `uuser`
CREATE TABLE dept1(
`id` INT,
`name` VARCHAR(25)
)
CREATE TABLE dept2
SELECT `department_id`,`department_name`
FROM `departments`
TRUNCATE TABLE `dept2`
DROP TABLE `dept2`
CREATE TABLE emp5(
id INT(7),
First_name VARCHAR(25),
Lase_name VARCHAR(25),
Dept_id INT(7)
)
ALTER TABLE `emp5` CHANGE COLUMN `Lase_name` `Lase_name` VARCHAR(50)
DROP TABLE `emp5`
CREATE TABLE empoyees2(
id INT,
NAME VARCHAR(25)
)
ALTER TABLE `empoyees2`RENAME TO emp5
ALTER TABLE `emp5` ADD COLUMN `test_column` INT
ALTER TABLE `emp5` DROP COLUMN id