MySqL学习记录(增删改查)

本文详细介绍了SQL的基本操作,包括创建表、删除表、插入数据、查询数据、更新数据和删除数据。还涉及到条件查询、结果集处理、高级查询如范围查询和相似查询,以及如何使用函数和建立索引来优化查询效率。此外,文中提到了外键和级联删除的概念,强调了数据完整性和约束的重要性。
摘要由CSDN通过智能技术生成
创建表

CREATE TABLE  sample 
(

   id INT NOT NULL,`sample`
   stringname VARCHAR(20) NOT NULL

)


删除表
IF 	EXISTS  // 判断当前表是否存在
DROP TABLE IF 	EXISTS 	sample ;
插入数据
INSERT INTO 表名
   (1, 列2...,  列N)
VALUES
   (1, 值2,  ...,  值N)

简化写法
INSERT INTO student
VALUES ('20181009', '小张', '18799891829', '1992-4-19')
查询数据
select *  from 表名 where 过滤条件 
WHERE id='20180001'
WHERE id <> '20180001'  ;  /* 不等于 */
WHERE phone IS NULL ;   /* 手机号为空 */
WHERE birthday >= '2000-1-1'  ;  /* 00后 */


多个条件可以用 AND  OR 
例如
WHERE id > '20180002' AND id < '20180005' 
WHERE id < '20180002' OR id > '20180005' 



指定列查询
select  name, birthday from student where id<20180003; 
更新数据

使用UPDATE 命令可以更新数据
UPDATE 表名 SET 列名='value' WHERE 过滤条件

示例:
UPDATE   student   SET  phone='13810099890'
        WHERE   id='20180001'

UPDATE  student  
SET  phone=NULL  
WHERE   id >= '20180001' AND id <='20180003'
删除数据
用 DELETE  命令可以删除指定的行
delete  from  表名  where  过滤条件

注意:如果不加where限制,则会删除所有行
结果集
更改列标签
SELECT id AS `学号`, `name` AS `姓名`  
FROM student

结果集排序
SELECT  *
FROM student
WHERE sex = '1' ORDER BY id ASC ,birthday DESC  
按照id升序,如果id相同按照生日降序


ASC表示升序 ( ascending )
 DESC表示降序 ( descending )
高级查询

范围查询
使用 IN 可以指定一个查询范围
示例
SELECT * FROM student 
WHERE id IN ('20180001', '20180003', '20180005') ;

用IN指定一个列表,凡在此列表中的则符合条件
( 注: NOT IN 表示不在列表)



相似查询
对于字符串字段,可以使用精确查询或相似查询
精确查询: where  name='张良' 
相似查询:  
    where  name LIKE '%良%'
    where  name LIKE '张%'
    where  name LIKE '张%良'
注:对于Oracle, SQL Server 通配符可能不是%




使用函数
SELECT * FROM student 
WHERE  YEAR(birthday)>=1980 
       AND YEAR(birthday)<1990  ;

其中YEAR(birthday),就是MySQL内嵌的函数,可以求日期字段的年份( 百度: MySQL 函数)
建立索引
可见,为某一列建立索引之后,以该列为基础的查询速度会提到很大提升。
在建立索引时,可以额外指定类型
普通索引 :默认的索引类型
唯一索引 Unique:索引里的值不允许重复
主索引 Primary:主键也是一种索引
全文索引 FullText :为长文本建立的索引

关联查询
表 student 和 exam 存在关联性
关联查询:
SELECT `name` ,`chinese`, `english`,`math`
FROM exam, student 
WHERE exam.`id` = student.`id`;


数据库命名写法
SELECT b.`id` , a.`chinese`,a.`english`,a.`math`
FROM exam a,student b
WHERE a.`id`=b.`id`


注意:
a,b两表中有同名字段时,在SQL中必须指定全名
  例如,student.id / exam.id
内连接 INNER JOIN
SELECT    * 
FROM student a INNER JOIN exam b
ON a.id = b.id
WHERE a.sex=0
外连接: OUT JOIN
示例:
SELECT    * 
FROM student a LEFT OUTER JOIN exam b
ON a.id = b.id
WHERE a.sex=0

其中,LEFT OUT JOIN 左外连接 (a左b右)
相当于求交集,没有交集的用Null表示

外键

外键 FOREIGN KEY ,是一种约束条件
例如,
有student表示学生信息
有exam表示学生成绩,以学号字段进行关联

现在,在学生表里删除一条学生的记录,可以吗?
显然,如果不管外部约束、盲目删除student表的数据,会导致整个系统的数据不完整。


级联删除
在外键约束时,设置删除选项 (Cascade)
用法:从student表中删除一条记录,可以发现exam表中的相应记录也被一并删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值