mysql总结3→单表查询1

CRUD :增删改查。create(增加)、retrieve(查询)、update(更新)、delete(删除) 

 

1.插入一行:比如对t_user表插入一行数据,我们可以这样写:

 

insert into t_user(username,password,age,address) values('tom','123',12,'北京');

 

注意事项:

<1>.MySQL中的字符串必须以&rdquo;单引号&ldquo;修饰。

 

<2>.每次必须插入一行数据,不能插入半行或者某几列数据。

 

<3>.每个数据值的数据类型、精度和小数位数必须与相应的列匹配。

 

<4>.如果在设计表时指定某列为not null,那么该列必须插入值!!

 

<5>.对于缺省的列,可以使用关键字default来插入缺省值。

比如:我们不想修改t_user表中的地址默认值(河南),我们可以这样写。

insert into t_user(username,password,age,address) values('tom','123',12,default);

 

<6>.★可以对添加值都加单引号,这样就不用考虑数据类型了!!★,如下面:就不用考虑年龄是int型的数据了

insert into t_user(username,password,age,address) values('tom','123','12','北京');

 

 

2.插入多行数据:如对t_user表插入多行数据(注意:每条数据之间是用&rdquo;逗号&ldquo;分开的!!)

 

insert into t_user(username,password,age,address)

values('alex','123',24,default),

 ('jack','123','45','America'),

 ('张三','12','2',default);

 

3.数据的更新:update

 

<1>.对整列数据更新:

update t_user set 'password'='123456' ,age='123';

 

<2>更新某行:比如修改id=1的记录。

update t_user set 'password'='123',age=123 where id=1;

 

<3>更新某几行:(有以下几种写法:)

(1.) update t_user set 'password'='123456',age=21 where id=5 or id=6 or id=7;

 

(2.) update t_user set 'password'='123456',age=21 where id in(5,6,7); (此方法速度较快!!)

 

(3.) update t_user set 'password'='123456',age=21 where id between 5 and 7; 

 

(4.) update t_user set 'password'='123456',age=21 where id>=5 and id<=7;

 

4.where子句操作符:

 

《1》逻辑运算符:

= : 等于;                        <> : 不等于 ; (或者是 != )

< : 小于;                         > : 大于;

<= : 小于等于;              >= : 大于等于;

between : 在指定的两个值之间。

 

《2》关系运算符: and : 与;                or : 或;              not : 非;

 

5.数据的删除:

delete from t_user where id=1;  (注意事项:★如果不跟where条件会清空数据库,这是非常危险的!!★)

 

说明:

<1>.如果某条数据有外键引用,则不能删除。若要删除则需要删除外键引用的行,再删掉原行!

 

6.删除表中的所有的记录:

 

<1>.truncate table  表名;(不能包含where子句,运行速度比下面的快!!!)

 

<2>.delete from 表名;

 

7.数据库的查询:

 

<1>.查询表中的所有的记录:

select * from t_user; (说明:实际用时不允许写*的,而是把所有的列名写出来;原因:写*降低性能!!)

 

[select id,username,password,age,address from t_user;]

 

<2>.获得刚插入行的id:

select last_insert_id();

 

<3>.去除重复行:如去除password中重复的行:

select distinct password from t_user;  (注意distinct后面只能跟一个列!!写多列,则不能去除重复的行!!)


我们可以看下mysql的正则:

http://www.yiibai.com/mysql/mysql_regexps.html#mysql_regexps


 

<4>.分页:如下面是每页显示3条记录:


select * from t_user limit 0,3

select * from t_user limit 3,3;

select * from t_user limit 6,3;

select * from t_user limit 9,3;

 

<5>排序:默认的是asc(升序),desc表示降序

select * from t_user order by id desc; (按id降序)

 

select * from t_user order by id asc; (按id升序)

 

 

select * from t_user order by id asc, age desc;(表示多列排序:id按升序,age按降序) 

 

<6>.is null的使用

(1.)比如查无地址信息的用户:

select * from t_user where address is null; 

 

(2.)相反查询有地址信息的用户:

select * from t_user where address is not null;

 

<7>.说明性信息:

 

(1.)and的优先级比or高;

(2.)in操作符与or功能相同;

(3.)当使用长的合法选项清单时,in操作符语法更直观;

(4.)in操作符比or操作符执行速度更快;

(5.)★in操作符的最大优点:可以包含其他的select语句。

 

<8>.in的相反方向是:★not  in 而不是in not ;★

比如:查询age不包括21和22的用户;

select * from t_user where age not in (21,22);

 

8.like查询:

<1>.like通配符:       _ 下划线通配符 &rarr; 匹配一个字符 ;  % 通配符   &rarr; 匹配一个或任意多个字符;

 

<2>.注意事项:

(1.) 不要过度使用LIKE通配符,如果其他的操作符可以完成就使用其他的操作符;

 

(2.) 通配符搜索使用的时间比其他搜索的时间要长

 

(3.) ★如果确实需要使用通配符,除非绝对有必要,否则不要把通配符放到where子句的开始处;

     (把通配符放到搜索模式的开始处,搜索起来是最慢的!!!!!)

 

<3>.

eg1:搜索名字以韩开头的用户

select * from t_user where username like '韩%';

 

eg2: 查找名称为:韩 X风的用户:

select * from t_user where username like '韩_风';

你可能感兴趣的:(mysql,查询,增删改查,like)