Mysql

来源:互联网 发布:linux vim无法退出 编辑:程序博客网 时间:2024/06/07 08:02

MYSQL:

对大小写不敏感

 

between 值1 and 值2;

  其中包括两端的值

比较预算符

前后不可加函数限制只能使用子查询

auto_increment

主键自增

创建表格只有int

后面可以不加字符长度限制

status;

查询端口号

select vision();

查询端口号

create database world;

创建数据库

drop database database_name;

删除数据库

drop index;

删除索引

source C:/world.sql;

构建数据库表

desc<table name>;

describe table_name;

查看指定表的创建语句

show tables;

查询数据库中的表

net start mysql

启动服务

net stop mysql

停止服务

create table 表名(

属性名  数据类型[完整性约束条件],      

属性名  数据类型[完整性约束条件],       

......      

属性名  数据类型primary key()); 

创建表格

option name=option value

创建表的属性

方法一:rename table tablename1 to tablename2;

方法二:alter table tablename1 rename tablename2; 

该表名

show table status;

显示表的属性

alter table table_name engine=innodb; 

修改表格样式

SHOW global variables like '%engine%';

查看mysql新生成表的默认类型

alter table 表名 add primary key; alter table student9 add primary key (cno)

添加主键

auto_increment

auto_increment='100'

主键自动增加一,默认值是1

alter table table_name drop primary key ;

删除主键

lter table student7 add foreign key student7(ano) references student(ano);

添加外键

 

 

二. 快捷键

  注释行快捷键

CTRL + /       

  取消注释行

CTRL + SHIFT + /

  增加缩进

TAB

  减少缩进

SHIFt + TAB

  运行

CTRL + R

  运行已选择的

SHIFt + CTRL + R

  从这里运行一个语句

F7

  停止

CTRL + T

  查找下一个

F3

  查询编辑器

CTRL + E

  下一个窗口

CTRL + TAB

  运行:

F9

  逐过程:

F8(运行暂停,恢复运行)

  逐语句:

F7

  跳过:

shirft+F7

alter tabletable_name add 约束条件(columnname); 

修改列名

alter table 表名1 change column 旧列名 新列名 varchar(20);

添加列:

   alter table 表名 add 列名 数据类型;

删除列:

alter table 表名 drop 列名 数据类型;

删除某行:

delete from 表名称 where 列名称 = 值            

eg:    delete from student7 where ano=2;

删除所有行:

delete from 表名称  或者 delete*from表名称     

eg:   delete from student7;

查看表结构:

desc 表名;show columns from 表名;

查看见建表语言:

show create table 表名;

创建表的备份附件:

select into :从一个表中选取数据插入另一个表中,用于表的备份或者对记录进行归档

select*into new_table_name[IN externaidatabase] from old_tablename;

select column_names into new_table_name[IN externaidatabase] from old_tablename;

插入记录insert:

insert into 表名1(表1列1,表1列2)select 表2列1,表2列2   from 表2 where 条件;

查询插入

insert into 。。。。。。select。。。。。

insert into student(sno ,cno) select sno,cno fromstudent2where sno in (4,5);

 子查询写入

insert into 表名 列名1=值1,列2= 值2,,,where;

更新记录 

update....set....

eg:  update student set sname='小明',sex='女'where sno=5;

查询select:

eg:   select *from student where age not between 50 and 65;(包含两端)

select语句

指定从哪些表中获取数据from<table-specification>

 

distinct:消除重复记录行select distinct<expressionlist>

 

 where:只返回满足特性条件的记录航(过滤器)where<condition>

 

order by按照表达式列表排列顺序记录

order by<ordering-specification>

 desc

降序排列

   asc

升序排列

order by tg asc,tno desc

;按照第一序列排列,再按照第二序列排列。

limit:

返回特定部分的数据,而不是所有结果limit<rowcount>

 group by语句:

 select  customer,sum(orderprice) from customer group by列名1,列名2;

  having

设置分组条件

select  customer,sum(orderprice) from customer group by列名1 having sum(orderprice)>2000;

外键

一个表可以有多个外键

[constraint symbol]foreign key [id] (index_col_name, ...)references tbl_name (index_col_name, ...)[on delete {restrict\cascade\set null\no action\set default}]

跨表匹配inner join可用 与两个没设置外键的表格:

 select column(s) from tablename1 inner join tablename2 on tablename1.column=tablename2.column innner join tablename3 on tablename1|2.column=tablename3;但是用on可以后面加其他的条件筛选,on作为表的条件,where作为结果的条件;

left join:

 即使右表中没有匹配,也从左表返回所有的行 ,左表所有记录

right join:

 即使左表中没有匹配,也从右表返回所有的行,右表所有记录

full join:

只要其中一个表中存在匹配,就返回行,有些数据库中显示full outer join

子查询: 

通过相同的列进行表间或者表内查询 ,两个表有没有外键连接都行

select sno from student where ano=(select ano from grade where result='20');

使用union联合查询

 不允许重复值:select...union select....

允许重复值:select....union all select....

输入用户名密码

shell>mysql -h localhost -p -u myname

root账户链接服务器:

shell>mysql -u root -p13465 -P 8080 -h 10.84.62.110

退出mysql,可使用

\q、quit()、exit():     mysql>\q

 mysql客户端

上下键循环调出历史命令,左右键移动光标,del键删除当前光标处字符,esc键取消当前输入内容

算术运算符:

x+y,x-y,    乘法x*y        除法x/y    ,整除x DIV y    4DIV3    ,取模x%y    4mod3    

比较运算符:

x=y 结果为true ;  

x and y   xy都成立的时候为true;

x or y  xy成立一个值则为true; ;

not y    y是false 则结果为true.    

x<=>y    支持null值的比较    

x<y    x<=y  x>y  x>=y  

BETWEEN ... AND

数值、文本或者日期。 包左不包右。

like搜索某种模式

通配符‘%'匹配任意字符

通配符‘_’表示一个字符

x rlike 'regular expression'或者x regexp 'regular expression'

正式表达式true可以匹配url,ip地址、电话号码,以及邮政编码等更为复杂的模式

where name rlike'nat';where name rlike '*&^%*new<>';

 

<>all,!=all,not in ,in,any,all,some:

 any或者some 其中的一个 ,all全部。any与in的运算方法相似,=all是不存在的,,!=all(或<>all)与not in 相似的

我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):

SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')AND LastName='Carter'

 eg:统计<学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序

    Selectcount(*) as ‘总人数’,sex,classfrom student group by sex,class order by class asc;

    统计<学生选修信息表>,显示有两门以上课程不及格的学生的学号(这个表格中没有主键的)

        Select sno from gradewhere result>60 group by sno  having count(*)>2;

查询空值

 where XX ='NULL'

XX字段存的值就是NULL这四个字符,

where XX is null  

XX字段什么也没存,这是数据库的判断语法,

where isnullXX

XX字段什么也没存,这是界面开发语言的判断语法

函数

均值avg()  

eg :    select avg(orderprice)  as orderaverage form orders;

求和sum()

eg:    select avg(orderprice) from orders;

返回匹配条件的行数count()

eg:        select count(orderprice) from orders where orderprice>1000;   

count(*)

返回匹配条件的记录数

返回文本字段中的长度len()orlength()  

select length() from student;

把字段的值转换为大写

ucase()

把字段的值转换为小写

lcase()

从文本字段中提取字符

mid(列表,起始位置,长度);

select mid(customers,1,3) from orders;  ali

select mid(customers,1) from orders; alice

select mid(customers,3) from orders; ice

 

 

把数字字段舍入指定的小数数位

round()  

select round(score,2) from teacher;

函数用于对字段的显示进行格式化

format()

select  format(X,D)  from teacher

查询选择所有 date_col 值在最后 30 天内的记录

mysql> SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) – TO_DAYS(date_col) <= 30;

to_days(date)  mysql>>select to_days('1992-08-15');

返回从零年开始的天数,,反函数:

mysql>>select from_days(729669);

返回年份,但是不考虑历法改变所遗失得日期

select dayofweek('1992-08-15');

返回 date 的星期索引(1 = Sunday, 2 = Monday, … 7 = Saturday)。

select weekday('1992-08-15');

返回 date 的星期索引(0 = Monday, 1 = Tuesday, … 6 = Sunday)

select dayofmonth('1992-08-15');

返回一个月的第几天

select dayofyear('1992-08-15');

返回一年中的第几天

select month('1992-08-15');

返回一年中的第几个月

select quarter('1992-08-15');

返回一年中的第几个季度

select week('1992-08-15');

返回一年中的第几周

select week('1992-08-15',1)

select week('1992-08-15',0);

 

;#0(偶数) 一周以星期日开始,返回值范围为 0-53 ;1(奇数) 一周以星期一开始,返回值范围为 0-53

select yearweek('1992-08-15');

返回年份+第几周。可以用mid限制输出结果

类似的函数:

小时hour(),分钟minute(),秒second(),period_add(9801,2)增加2个月到1998年1月,返回199803

DATE_FORMAT(date,format)

%M

月的名字 (January..December)

%W

星期的名字 (Sunday..Saturday)

%D

有英文后缀的某月的第几天 (0th, 1st, 2nd, 3rd, etc.)

%Y

年份,数字的,4 位

%y

年份,数字的,2 位

%X

周值的年份,星期日是一个星期的第一天,数字的,4 位,与 ‘%V’ 一同使用

%x

周值的年份,星期一是一个星期的第一天,数字的,4 位,与 ‘%v’ 一同使用

%a

缩写的星期名 (Sun..Sat)

%d

月份中的天数,数字的 (00..31)

%e

月份中的天数,数字的 (0..31)

%m

月,数字的 (00..12)

%c

月,数字的 (0..12)

%b

缩写的月份名 (Jan..Dec)

%j

一年中的天数 (001..366)

%H

小时 (00..23)

%k

小时 (0..23)

%h

小时 (01..12)

%I

小时 (01..12)

%l

小时 (1..12)

%i

分钟,数字的 (00..59)

%r

 时间,12 小时 (hh:mm:ss [AP]M)

%T

 时间,24 小时 (hh:mm:ss)

%S

秒 (00..59)

%s

秒 (00..59)

%p

AM 或 PM

%w

一周中的天数 (0=Sunday..6=Saturday)

%U

星期 (00..53),星期日是一个星期的第一天

%u

星期 (00..53),星期一是一个星期的第一天

%V

星期 (01..53),星期日是一个星期的第一天。与 ‘%X’ 一起使用

%v

星期 (01..53),星期一是一个星期的第一天。与 ‘%x’ 一起使用

%%

一个字母 “%”

mysql> SELECTDATE_FORMAT(’1997-10-04 22:23:00′, ‘%W %M %Y’);

-> ‘Saturday October1997′

mysql> SELECTDATE_FORMAT(’1997-10-04 22:23:00′, ‘%H:%i:%s’);

-> ‘22:23:00′

0 0
原创粉丝点击