SQL 常用命令

1.操作數據庫

1.1 查看存在的庫、定義信息、正在使用和切換數據庫的命令

a.查看數據庫服務器已有的數據庫:

    show databases;

b.查看數據庫的定義信息:

    show create database 數據庫名稱;

c.切換/連接數據庫

    use 數據庫名稱;

d.查看當前連接的數據庫:

    select database();

1.2數據庫的創建

語法:create database 數據庫名稱;
如: create database t1;

1.3數據庫修改和刪除

修改語法:

alter database 數據庫名稱 character set 字符編碼名稱;

如: alter database t1 character set gbk;

刪除語法:

    drop database 數據庫名稱;

如:drop database t1;

2.mysql常用數據類型

  • int:整型 double:浮點型,例如double(5,2)表示最多5位,其中必須有2位小數,即最大值爲999.99;
  • char:固定長度字符串類型; varchar:可變長度字符串類型; text:字符串類型;
  • blob:字節類型;
  • date:日期類型,格式爲:yyyy-MM-dd;
  • time:時間類型,格式爲:hh:mm:ss
  • timestamp:時間戳類型 格式爲:yyyy-MM-dd hh:mm:ss

3.操作表

3.1查看當前庫已有表、表定義及表結構

查看當前庫已有表:

     show tables;

查看錶定義信息:

     show create table 表名;

查看錶結構:

    desc 表名;

3.2創建表

語法:

            create table 表名(
              列名 數據類型(長度),
              列名 數據類型(長度),
              ……
              );

注意:最後一列的定義後面不需要加逗號
如:

     create table emp(
                eid  int,
                ename  varchar(20),
                eage int
               );

3.3修改表

a.爲emp表添加列address varchar(30)

    alter table emp add address varchar(30);

b.修改emp表的address 數據長度爲40

    alter table emp modify address varchar(40);

c. 修改address列名爲addr

    alter table emp change address addr varchar(40);

d. 刪除emp表的addr列

    alter table emp drop addr;

e. 修改emp表的表名爲employee

    alter table emp rename to employee;
    alter table emp rename employee;

3.4刪除表

語法: drop table 表名;
如:drop table employee;

4.完整性約束

4.1約束簡述

完整性約束:保證數據庫表中數據的正確性,合理性等。
數據庫約束:

  1. 主鍵約束:用戶保證表中數據的唯一性(沒有重複的數據)
  2. not null:非空約束。約束列中的數據非空
  3. unique:唯一約束。保證列數據的唯一性(不能重複)
  4. 外鍵約束:保證表中數據引用的完整性。

4.2約束詳解

a.創建主鍵約束:主鍵列值必須非空且唯一,並且一個表有且只有一個主鍵。
方式一:

       create table stu (
          sid varchar(10) primary key,  
       sname varchar(20)
); 

方式二:

  create table stu (
       sid varchar(10),  
       sname varchar(20),
       primary key(sid)
); 

方式三: 先創建表,然後修改表添加主鍵

 create table stu (
       sid varchar(10),  
       sname varchar(20)
); 
alter table stu add primary key(sid);

主鍵自增:auto_increment

create table stu(
  sid int primary key auto_increment,
  sname varchar(20)

);

b.非空約束:not null
方式一:

 create table stu(
   sid int,
   sname varchar(20) not null
);

方式二:alter table stu modify sname varchar(20) not null;

c.唯一約束:unique

create table stu(
   sid int,
   sname varchar(20) unique
);
alter table stu add address varchar(30) unique;

d.外鍵約束:foreign key

方式一:

 create table dept(
deptno int,
deptname varchar(20),
primary key(deptno)
);


create table emp(
  eid int,
  ename varchar(20),
  e_d_no int,
  primary key(eid),
  foreign key(e_d_no) references dept(deptno)
);

方式二:
先定義表結構,然後修改表添加主鍵和外鍵(比較常用)

 create table emp(
  eid int,
  ename varchar(20),
  e_d_no int
);

 create table dept(
deptno int,
deptname varchar(20)
);

修改主表,添加主鍵

alter table dept add primary key(deptno);

修改從表,添加外鍵引用

alter table emp add foreign key(e_d_no) references dept(deptno);

DML語句:對錶數據的增刪改

相關命令:insert update delete
1. 向表中插入數據:
語法:insert into 表名(用逗號分隔的列名列表) values(使用逗號分隔的每列的數據列表);
如:

  insert into stu(sid,sname,age,gender) values('M_001','tom',23,'male');

2.修改表數據:
update 表名 set 列名=新值,列名=新值…… [where 子句];
如:

  update stu set sname=’jack’;

3 刪除表中的數據
使用delete刪除表數據
語法: delete from 表名 [where 子句];
如:delete from stu;

使用truncate刪除表數據:
語法:truncate [table] stu;

delete和truncate區別
delete逐條刪除數據(性能較低)
truncate(截斷表):首先執行drop table刪除表結構, 然後再執行create table創建表結構。性能較優。

DQL操作
命令只有select
語法:

SELECT selection_list /*要查詢的列名稱*/
  FROM table_list /*要查詢的表名稱*/
 [ 
 WHERE condition /*篩選數據行的條件*/
  GROUP BY grouping_columns /*對結果分組*/
  HAVING condition /*分組後的篩選行的條件*/
  ORDER BY sorting_columns /*對結果排序*/
]

注:[…] 代表可選,而不是語句中有[] 。

0.基本查詢:

select  *  from stu;  /*查詢所有列*/
select sname,age from stu;  /*查詢指定列*/

1.條件查詢
運算符:

  • =、!=、<>、<、<=、>、>=;
  • BETWEEN…AND;
  • IN(set);
  • IS NULL;
  • AND;
  • OR;
  • NOT;

a.查詢年齡大於35歲的人的姓名和年齡

  select sname,age from stu where age>35;

b.查詢年齡在15和35歲的人的姓名和年齡

select sname,age from stu where age between 15 and 35;

c.查詢年齡等於25、35、45歲的人的信息

  select * from stu where age in(25,35,45);

d.查詢沒有填寫性別的人的信息

 select * from stu where gender is null;

e.查詢年齡大於35歲的男性的信息

  select * from stu where age>35 and gender=’male’;

f.查詢年齡大於35歲的信息

select * from stu where age>35; 

g.查詢性別不爲空的人的信息

select * from stu where gender is not null;

2.模糊查詢

模糊查詢的通配符:
% 表示任意數量的字符
_ 表示任意一個字符
模糊查詢的關鍵詞:like

a.查詢名字是字母z開頭的人

 select * from stu where sname like 'z%';

b.查詢名字包含b字母的人

select * from stu where sname like '%b%';

c.查詢名字包含n字母其n字母前只有兩個字符的人

 select * from stu where sname like '__n%';

以下查詢使用emp表
3.列別名
使用as關鍵字爲列定義別名,另外,該關鍵字可以省去

          select ename as '名字', sal  as '月薪' from emp e;
          select ename '名字', sal  '月薪' from emp e;

4.排序
desc降序 asc升序(默認值)
查看僱員的月薪,並進行排序

 select ename, sal  as  'sal' from emp  order by  sal desc;

5.聚合函數

聚合函數是用來做縱向運算的函數:

  • COUNT():統計指定列不爲NULL的記錄行數;
  • MAX():計算指定列的最大值,如果指定列是字符串類型,那麼使用字符串排序運算;
  • MIN():計算指定列的最小值,如果指定列是字符串類型,那麼使用字符串排序運算;
  • SUM():計算指定列的數值和,如果指定列類型不是數值類型,那麼計算結果爲0;
  • AVG():計算指定列的平均值,如果指定列類型不是數值類型,那麼計算結果爲0;

    注意:聚合函數只返回一個結果

a.查詢emp表中月薪大於2500的人數:

     select count(*) from emp where sal>2500;

b.統計所有員工平均工資:

select avg(sal) from emp;

6.多表查詢

笛卡爾積查詢:

select * from emp,dept;

消除笛卡爾積:
內連接(等值連接)

 select * from emp e,dept d where e.deptno=d.detpno;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章