mysql中的lable_MySQL基础原创笔记(一)

对表的增删改操作:

创建表:

create table student (

id  int  primary key  auto_increment,

name  varchar(10)  character set utf8  not null,

sex    char(2)  default ‘M’,

constraint  fk_student_score  foreign key(id)  references score(id)

)  engine=InnoDB;

primary key:指定表的主键;

如果是指定单个主键,可直接在该字段后声明;

如果是指定多个主键,只能采用primary key (X,Y)的形式;

定义外键:

constraintfk_T2_T1foreign key(t2_id) references T1(t1_id); //将T1表中的t1_id字段设置成为T2表的外键;

增加外键

alter tableT2orderitemds add constraintfk_T2_T1foreign key(id) references T1(id); //将T1表中的t1_id字段设置成为T2表的外键;

auto_increment :让Mysql自动对该列增量;每个表只允许有一个auto_increment列,且必须被索引(以最大的数去递增),从而可将该列当作主键;

注:select last_insert_id():该语句可获得最后一个auto_increment的值;

default:为字段设置默认值;

character set …:指定编码格式,通常是为了让其能识别中文;

engine =…:指定mysql引擎;

常用的引擎类型:

InnoDB:可靠地事物处理引擎,但不支持全文检索;

MyISAM:性能极高的引擎,支持全文检索,但不支持事务处理;

MEMORY:功能同于MyISAM,但由于数据库在内存里,速度很快;适用于临时表;

注:新版Mysql默认引擎是InnoDB;

更新表:使用alter table语句

增加列:

alter tableTadd Tname varchar(20); //为T表增加一个名为Tname的列

删除列:一次只能删除一列;

alter tableTdrop columnTname; ///删除T表中名为Tname的列

删除表:使用Drop table语句

例:drop table T;

重命名表:使用rename table语句

例:rename table T1 to t1, T2 to t2, T3 to t3;

对表中数据的查询操作:

SQL语句格式:

select

from

where

group by

having

order by

limit

去重:distinct

例:select distinct * from T

数据分组:group by , having , rollup

group by  :进行分组; 如果分组中具有null值,则null将作为一个分组返回;

having   :过滤分组; 它支持所有where中的操作符;

注:可以使用rollup关键字来显示出分组前所有的数据;例:group by prod_id with rollup;

除聚集计算语句外,select语句中使用的每个选择列或表达式列,都必须在group by子句中给出;

排序:order by

select * from XXX order byXXX (desc(降序)/asc(升序))

限制检索行数:limit,limit offset

例:    select * from XXX limit 0,2 (从第0行开始,取2行)

等价于  select * from xxx limit 1 offset 2(从第2行开始取1行)

起别名:

可以为表或列起别名;

有两种形式:

(1)table1 t1

(2)table1 as t1

where语句中注意的问题:

注:and比or的优先级高

‘<>’ 等价于 ‘!=’f

between A and B:包括边界

is null

in :指定条件范围 取值时用","分隔,相当于or的作用,但比or操作符执行的更快;并且可以包含select语句;

not

like: %:任意字符(null除外)   _:单个字符

注:用通配符过滤:花费时间较长,避免过度使用;可以考虑用正则表达式;

mysql支持部分正则表达式,可以匹配基本的字符和字符串;

形如: select * from products where prod_name regexp ‘XXXX’

例:检索到prod_name包含文本1000的所有行;

select *   from products   where prod_name regexp ‘1000’

mysql的预定义字符集:

[:digit:]---任意的数字(同[0-9])

[:lower:]---任意小写字母(同[a-z])

[:upper:]---任意大写字母(同[A-Z])

[:alpha:]---任意字符(同[a-zA-Z])

[:alnum:]---任意数字和字母(同[a-zA-Z0-9])

[:blank:]---空格和制表符(同[\\t])

[:space:]---任意的空白字符,包括空格;(同[\\f\\n\\r\\t\\v])

例:-- 表示检索出现连在一起的任意4位数字和小写字母的所有

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值