MySQL学习第六天 数据库的增删改

本文详细介绍了数据库的操作,包括DML(Data Manipulation Language)中的插入、更新、删除语句,以及DDL(Data Definition Language)中的库和表的管理。通过实例展示了如何使用SQL进行数据的增删改查,并探讨了不同操作的特点和约束。内容涵盖了主键、唯一性、非空等约束的使用,以及表的创建、修改和删除。
摘要由CSDN通过智能技术生成

操作数据库表中字段

#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值