日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL下的SQL语句

發布時間:2024/8/26 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL下的SQL语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL語言包含四個部分:

  DDL(數據庫定義語言):用于定義和管理數據對象,包括數據庫、數據表等

          如:create、drop、alter

  DML(數據庫操作語言):用于操作數據庫對象中所包含的數據

          如:insert、update、delete

  DQL(數據庫查詢語言):用于查詢數據庫對象中所包含的數據

          如:select

  DCL(數據庫控制語言):管理數據庫的語言,包括管理權限及數據更改

          如:grant、revoke、commit、rollback         

?【對數據庫的操作】

創建數據庫:create database/schema [if not exists] db_name default character set '字符集';

刪除數據庫:drop database if exists db_name;

查看已有的數據庫:show databases/schemas;

打開指定數據庫:use db_name;

查看當前打開的數據庫:select database();

查看已創建的指定數據庫的編碼方式:show create database db_name;

修改已有數據庫的編碼方式:alter database db_name default character set '字符集';

臨時轉換客戶端的編碼方式:set names gbk;(臨時的用來輸入中文,退出后就失效)

將已有的數據庫備份到外部文件中:

  mysqldump -u用戶名 -p密碼 db_name >> 文件路徑/text.sql

將外部文件中的數據導入到已有數據庫中:

  方法一:mysql -u用戶名 -p密碼 db_name < 文件路徑/text.sql

  方法二:

    use db_name;?

    source 文件路徑/text.sql

為數據庫創建新用戶授權:

  GRANT 權限 ON 數據庫.數據表 TO 用戶名@'登錄的主機名' IDENTIFIED BY '密碼' WITH GRANT OPTION;

  FLUSH PRIVILEGES;(立即生效)

  例:

    grant all/select,insert,update,delete on *.* to root@'%' identified by '密碼' with grant option;

    flush privileges;

    (*.*表示所有數據庫的所有數據表;'%'表示通過任意主機進行授權,可為'localhost'或已有用戶的'主機IP')

【對數據表的操作】

創建數據表:

  create table [if not exists] `table_name`(

    `字段名稱` 字段類型 [字段屬性],

    ... ...

  )[engine=myisam default charset=utf8];

  例:

    create table [if not exists] `users`(

      `id` int unsigned auto_increment primary key,? #添加索引的三種方式之一

      `username` varchar(30) not null unique comment "字段加注釋",

      `password` char(32) not null,

      `age` tinyint unsigned,

      `sex` enum("男","女","保密") default "男",

      `addr` varchar(255),

      `face` varchar(40) not null default "01.jpg",

      `email` varchar(50) not null default "819508293@qq.com",

      `vip` tinyint(1) not null default 0 comment "會員,0代表不是會員,其余值為會員",

      `startTime` int unsigned comment "會員起始時間",

      `endTime` int unsigned comment "會員到期時間",

      `ip` int not null,? #可利用 ip2long(str) 將IPv4轉為int數值寫入數據庫,long2ip() 可將該int數值轉為標準點格式的字符串輸出;

      key users_email(`email`),? #添加索引的三種方式之二

      key users_ip(`ip`)

    )engine=myisam default charset=utf8 [collate utf8_general_ci];

    給字段添加注釋:在字段最后加 comment "注釋內容"

刪除數據表:

  drop table table_name1,table_name2...;

修改數據表結構項:

  增加:alter table table_name add `字段名稱` 字段類型;

    例:alter table table_name add `email` varchar(50);

  刪除:alter table table_name drop `字段名稱`;

    例:alter table table_name drop `email`;

  修改:

    alter table table_name modify `字段名稱` 字段類型 字段屬性;

      注:只能修改對應字段名稱的字段類型和屬性

      例:alter table table_name modify `name` varchar(30) not null;

    alter table table_name change `字段名稱` `新字段名稱` 字段類型 字段屬性;

      注:不僅能修改字段類型和屬性,也能修改字段名稱

      例:alter table table_name change `name` `username` varchar(30) not null;

用修改表結構方法添加索引:

  alter table table_name add primary key(id);

  alter table table_name add unique table_name_字段名(字段名);

  alter table table_name add index table_name_字段名_index(字段名);

用修改表結構方法刪除索引:

  alter table table_name drop primary key;

  alter table table_name drop index table_name_字段名;

  1.刪除主鍵索引前,必須先將自增長修改掉;

  2.刪除唯一索引 unique,也同樣使用 drop index 而不是drop unique;

查看數據表中所有字段的索引:

  show indexes from table_name \G

查看當前數據庫已有數據表:show tables;

查看已創建的指定數據表:show create table table_name;

查看數據表的結構:

  desc table_name;

  describe table_name;

  show columns from table_name;

【對數據表中數據的操作】

向數據表中添加數據:

  insert [into] table_name(字段名稱1,字段名稱2...) values("值1","值2"...);

    例:

      ①指定字段名稱和字段值一一對應,是字符串類型的須使用引號(" "/ ' ')包含,不是字符串類型的可加可不加:

        insert table_name(id,username,password) values(1,"admin1",'password1');

      ②可為空的自增列在插入字段值時可使用NULL,會自動轉為自增的值:

        insert table_name(id,username,password) values(null,"admin1",'password1');

      ③自增列、非空且有默認值的字段可無需插入,仍會自動添加自增值或默認值:

        insert table_name(username,password) values("admin1",'password1');

      ④字段名稱的順序可自由排列,但后面字段值的順序也應對應排列:

        insert table_name(password,username) values('password1',"admin1");

      ⑤可以省略字段名稱,但在插入字段值的時候必須按照數據表中的字段順序插入:

        insert table_name values(null,"admin1",'password1');

  insert [into] table_name(字段名稱1,字段名稱2...) values("值1","值2"...),("值1","值2"...),...;

    例:insert table_name(username,password) values("admin1","pass1"),("admin2","pass2"),("admin3","pass3");

刪除數據表中的數據:

  delete from table_name [條件語句];

  例:

    delete from table_name where 條件;

    delete from table_name order by 字段名稱 asc limit 3;

清空數據表中的數據:truncate [table] table_name;

  注:delete后再添加數據時,auto_increment(自增長)的值不會重置而是向后遞加;truncate后auto_increment的值重置為1,重新開始遞增;

修改數據表中的數據:update table_name set 字段名稱="值",字段名稱="值",...;

有條件的定向修改部分數據:

  update table_name set 字段名稱="值" 條件語句;

  例:

    update table_name set 字段名稱=字段名稱+1 where 條件;

    uodate table_name set 字段名稱="值" order by 字段名稱 desc limit 3;

select查詢語句:

  select [all/distinct] */字段名稱 from table_name [where 條件] [group by 分組] [having 條件過濾(二次過濾)] [order by 排序] [limit 顯示條數];

  查詢表中的所有記錄:select * from table_name;

  整齊的格式化顯示數據:select * from table_name \G  (注意此時結尾是不加分號“;”的

  查詢表中的總記錄數:select count(*) from table_name;

  為總記錄數起別名,方便之后直接通過別名取得該值:select count(*) as 別名 from table_name;

  給字段添加別名:select 字段 [as] 別名,字段 別名 from table_name;

  有條件的定向查詢:select */字段名稱 from table_name 條件語句;

  查詢不重復的字段內容:select distinct 字段名稱 from table_name;(distinct為去重復項)

  根據某字段排序:一般應用于數值型字段,order by 字段 asc(升序)/desc(降序)

    select * from table_name [where 條件] order by 字段 asc/desc;

    select * from table_name order by 字段1 asc/desc,字段2 asc/desc;

  查詢限制顯示條數的記錄:

    select * from table_name limit 數值;(默認從頭開始)

    select * from table_name limit 0,2;(0-偏移量,跳過前多少條;2-顯示多少條)

    可用來做分頁

例:

  1.查詢各個年齡段的人數總數

    select age,count(*) from table_name group by age;

  2.查詢出年齡大于20的各個年齡的人數總數

    select age,count(*) from table_name where age>20 group by age;

  3.查詢出年齡大于20的各個年齡的人數總數多于1個人的

    select age,count(*) as c from table_name where age>20 group by age having c>1;

  4.以年齡進行升序排序,如果年齡相同的,按id降序排列

    select * from table_name order by age asc,id desc;

  5.隨機排序

    select * from table_name order by rand();

多表關聯查詢:

  1.普通關聯查詢:

    select [table1.]字段1,[table1.]字段2,[table1.]字段3,[table2.]字段1,[table2.]字段2? from table1,table2 where table1.id=table2.uid;

    table1.id=table2.uid為關聯項,table1中的數據值在table2中無關聯項,則該數據不顯示;

    select [別名1.]字段1,[別名1.]字段2,[別名1.]字段3,[別名2.]字段1,[別名2.]字段2? from table1 as 別名1,table2 as 別名2 where 別名1.id=別名2.uid;

    可以給數據表名稱添加別名,方便簡寫;

  2.連接關聯查詢:

    左連接:以左表(table1)為主,先輸出左表中的查詢數據,右表中無關聯項的則顯示NULL

      select table1.字段1,table1.字段2,table1.字段3,table2.字段1,table2.字段2 from table1 left join table2 on table1.id=table2.uid;

      select [別名1.]字段1,[別名1.]字段2,[別名1.]字段3,[別名2.]字段1,[別名2.]字段2? from table1 as 別名1 left join table2 as 別名2 on 別名1.id=別名2.uid;

    右連接:以右表(table2)為主,先輸出右表中的查詢數據,左表中無關聯項的則顯示NULL

      select table1.字段1,table1.字段2,table1.字段3,table2.字段1,table2.字段2 from table1 right join table2 on table1.id=table2.uid;

      select [別名1.]字段1,[別名1.]字段2,[別名1.]字段3,[別名2.]字段1,[別名2.]字段2? from table1 as 別名1 right join table2 as 別名2 on 別名1.id=別名2.uid;

    內連接:不以任何表為主,直接查詢on后面的關聯條件項,無對應數據的均不顯示

      select table1.字段1,table1.字段2,table1.字段3,table2.字段1,table2.字段2 from table1 inner join table2 on table1.id=table2.uid;

      select [別名1.]字段1,[別名1.]字段2,[別名1.]字段3,[別名2.]字段1,[別名2.]字段2? from table1 as 別名1 inner join table2 as 別名2 on 別名1.id=別名2.uid;

  3.嵌套關聯查詢(不推薦使用,效率極低)

    select * from table1 where id in(select uid from table2);

當使用條件語句時可用條件:

  和:&& / and  或:|| / or  非:!=

  值為null/不為null:is null / is not null

  在什么范圍之內:between...and...

  不在什么范圍之內:not between...and...

  包含在其內:in(1,2,3,4...)

  不包含在其內的:not in(1,2,3,4...)  除了括號中的匹配外其他都顯示

  模糊查詢:like / not like

  通配符:%(代表任意多個字符)  _(代表任意一個字符)

聚合函數:

  count(*):統計總數

  select sum(字段名) from table_name;? 統計所有該字段的和

  select avg(字段名) from table_name;? 統計該字段的平均值

  select max(字段名) from table_name;? 統計該字段中的最大值

  select min(字段名) from table_name;? 統計該字段中的最小值

?

轉載于:https://www.cnblogs.com/zhouwanqiu/p/9084732.html

總結

以上是生活随笔為你收集整理的MySQL下的SQL语句的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。