mysql數據庫 經常使用操做 sql指令 總結

建立數據庫 crate database name;

建立一個值得字符集的數據庫mysql

create database name character set utf8;  //指定utf8類型的數據庫sql

更改字符集 alter database name character set gbk;  //改成了gbk字符集數據庫

建立校對規則: 用於排序 如張三李四 能夠按照拼音、筆畫排序服務器

create database name character set utf8 collate uff8_unicode_ci;函數

顯示建立數據庫 show databases;

切換數據庫 use name;  //切換到name數據庫

查看當前正在應用的數據庫 select database();  //顯示出當前數據庫 名字

刪除數據庫 drop database name;


表建立操做

create table users(表名)(大數據

   id int,編碼

   name varchar(40),spa

   password varchar(40),code

   birthday dateorm

);

表的數據類型中,除了char 、varchar 必須指定長度,其它類型都有默認長度 


mysql經常使用的數據類型

字符串型            VARCHAR、CHAR

                         char定長 char(8) ---- 向數據庫存入hello  存爲hello+3個空格

⼤大數據類型     BLOB、TEXT                    

                        text 文本類型數據,主要存儲字符文件 --- 文本文件

                        blob 二進制文件 ,存儲任何類型文件(音樂、電影);longtext longblob 最大能夠保存4GB文件 

數值型               TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE 

                         tinyint (byte)  smallint(short) int(int) bigint(long)

邏輯性               BIT  

                         bit(8)表示8位 bit(32)表示32位至關於 int

日期型           DATE、TIME、DATETIME、TIMESTAMP                       

                        date 只能保存日期

                        time 只能保存時間

                        datetime 日期和時間都有

                        timestamp 日期和時間都有,自動更新到當前時間

經過desc語句 查看錶結構

語法:desc 表名; 

單表約束條件:

主鍵約束(惟一標識一條記錄)---- primary key 不能爲空、不能重複  通常自動增加 mysql爲 auto_increment

惟一約束(該字段內容不容許重複)----- unique 一張表只有最重要那個字段才能做爲主鍵 

非空(值不能爲空)----- not null

create table employee (

   id int primary key not null auto_increment ,

   name varchar(40) unique not null,

   gender varchar(10) not null,

);

表操做

向已有數據表添加一列 :                  alter table 表名 add 列名 類型(長度) 約束;

修改已有數據表一列類型、長度:     alter table 表名 modify 列名 類型(長度) 約束;

修改已有數據表一列的名稱 :           alter table 表名 change 舊列名 新列名 類型(長度) 約束;

刪除已有一列 :                                  alter table 表名 drop 列名;

修改表名:                                         rename table 舊錶名 to 新表名; 

修改表的字符集:                            alter table student character set utf8;

表刪除                                           drop table 表名;

show tables; 查看當前數據 中全部表

向表中添加一列:             alter table employee add image varchar(255);

修改一列的長度、類型      alter table employee modify job varchar(60) not null;

修改一列的名字                alter table user change name username varchar(40) unique not null;

刪除一列。                       alter table employee drop gender;

修改表名。                       rename table employee to user;

修改表的字符集爲             alter table user character set utf8;

show create table user; 顯示錶user的信息


表數據操做

表中插入數據

1,insert into employee(id,name,birthday) values(null,'zs','1990-01-10');字符串添加單引號 字符、日期單引號

2,insert into employee(name) values('zs');  //只插入部分

3,insert into employee values(null,'lisi',null);  //第一種簡寫

mysql有六處使用了字符集,分別爲:client 、connection、database、results、server 、system。

服務器端相關:database server system(永遠沒法修改 就是utf-8)

客戶端相關 connection client results 

解決中文插入亂碼問題:將客戶端相關三個編碼集設置 gbk 

set names gbk; ----- 快速設置客戶端相關三個編碼集

修改mysql 配置文件,永久改變客戶端編碼集 ----- mysql/my.ini 

[mysql] ---- 客戶端配置        //修改後注意重啓mysql服務

[mysqld] ---- 服務器端配置 


記錄修改操做

update 表名 set 列名=值,列名=值 where條件語句

update employee set salary = 3000 where name = 'zs';

條件比較前添加 binary 使比較更加精確嚴格,不然,'ZS '也會被當成‘zs'

update employee set salary = salary+1000 where name = 'wangwu';  //對salary進行加1000操做

沒有where語句,對全部數據行進行更新 

update employee set salary = 5000 ;   //全部人的工資設爲5000


表數據刪除

delete from 表名 where 條件語句;

delete from employee where name = 'zs';

truncate employee; delete from employee;  //刪除整個表數據

truncate 刪除記錄後不可恢復的,不受事務管理,原理:刪除整個表,delete能夠rollback;回滾恢復


表數據查找

SELECT *|column1, column2. columnFROM table;

select * from student;    //查詢全部列

select name from student;  //查詢名字列

select distinct name from student;  //查詢結果 不顯示重名,distinct去重複


查詢時運算

select name,math+chinese+enlish from student;  //查詢姓名 和總分 也能夠加數字 math+10

查詢時更改列名 as  ;as能夠省略

select name as 姓名 from student;  //列 更名爲 姓名

select name 姓名 from student;

查詢時篩選 比較

select name from student where math > 90;

select name from studetn where name like '李%';取出全部姓李的

select name from studetn where name like '李_';取出姓李的 名字兩個字的

and 和 or運算優先級 ; and的高,先執行

查詢時排序 order by 列 asc|desc; asc升序 desc降序

select name from student order by math desc;  //按照數學高到低排序

表函數

count 返回查詢結果的條數

select count(*) from student where math > 90;  //查詢數學大於90 的人數

sum對一列求和

select sum(math) from student ;   //查詢數學總分

avg 求一列的平均值

select avg(math) from student;    //求平均值  ;注意 null不參與運算

max,min 找出一列中最大最小的值

select max(math) from student;    //找出數學成績最高的

表查詢分組

group by 列; 篩選 having;

select name from student group by class having math > 80;  //選出數學大於80 的名字 按照班級分組


多表查詢

 

內鏈接:將兩張表相贊成義字段鏈接起來

語法:select * from a inner join b on a.id = b.id; 

簡化:select * from a,b where a.id = b.id; 

外鏈接:用一個表的查詢數據去查詢另外一個表

表a                       表b

select * from a left outer join b on a.A_ID = b.A_ID ;   //先查詢a表 而後 用a表 A_ID 去查表b 有寫出,沒有爲null

select * from a right outer join b on A.A_ID = B.A_ID ;

全鏈接 mysql不支持 可使用union 合而且去掉重複的

select * from A left outer join B on A.A_ID = B.A_ID

union

select * from A right outer join B on A.A_ID = B.A_ID;


關聯子查詢:將第一個查詢結果 ,做爲第二個查詢條件 

select name from student where age = (select max(age) from student);  //年齡最大學員的名字

相關文章
相關標籤/搜索