數據庫6.22

三大主流關系型數據庫:

Oracle??????? sql server??? MySQL





專業(yè)術語:

數據庫(database):存儲數據的倉庫,簡稱為DB

數據庫管理系統(database manger system),DBS

數據庫系統(database system),DBS???? DB+DBS====>? (軟件)

MySQL是典型的關系型數據庫

mysql安裝:

???????????? 1、.msi ? 的安裝:

???????????????????? 下一步

????????????? 2、.zip 壓縮包的安裝

???????????????????????? 1、官網下載

????????????????????????? 2、解壓壓縮包(不要有中文和特殊字符)

????????????????????????? 3、修改my.ini (隨機復制其中一個)文件


修改basedir=mysql的主目錄

修改datadir=mysql的主目錄\data

5、將mysql的bin配置到path中:

此電腦(右鍵)===>屬性=====>高級===>環(huán)境變量====>path(上面是當前用戶,下面是登錄用戶?? win7 和win8需要在最后打個英文分號?? 然后將路徑配置過去)

6、右鍵單擊以管理員權限打開??????? 將位置切換到mysql安裝路徑的bin目錄下

7、注冊服務:mysqld install? 安裝到電腦上的/? mysql? remove? 移除(必須把服務先停止)

?8、啟動服務:

?????????????? (1)、使用服務面板,手動啟動

?????????????? (2)、window下啟動服務(不用管位置)? net?? start/stop/(linux下啟動服務 ?? service xxx? start/stop/restart/status)

???????????????? (3)、進入mysql

liunx下安裝:

????????? 1、離線下載

?????????? 2、--atp(atp-get):

??????????????????????? ubuntu: ? sudo? apt-get install? mysql-server(服務器)mysql-client(客戶端)


必須要輸,以后的密碼

???????????????????????? CenterOS:sudo yum? install? mysql-server(服務器)mysql

退出mysql:

exit、quit、\q、Ctrl+C

常見的mysql命令:

?????????????????????????? show databases; #此命令返回當前DBS系統中所有數據庫

?????????????????????????? use dbName; #表示進入到對應名稱的數據庫中去

??????????????????????? ? ? show tables; # 查看當前數據庫下的所有表

??????????????????????????? desc/describe board;? ? # 查詢一張已經存在表的結構

??????????????????????????? select * from tableName; # 表示查詢tableName表的所有數據;

sql(structured query language)結構化查詢語言

??? sql:

???????? DDL(database defined language):數據庫定義語言

???????? create drop show alter……

???????? DML(database Manipulation Language):數據庫操作語言

???????? CRUD(create Retrieve update delete)

???????? insert

???????? update

???????? delete

?? select---DQL

??????? DCL(database controller language):數據庫控制語言

???? grant invoke

創(chuàng)建數據庫:

????? create [database/table/index/function/cursor/view] 名稱

????? create database db_py1805 [default charset=utf8 ]

刪除數據庫

????? drop [database/table/index/function/cursor/view] 名稱

????? drop database db_py1805;

創(chuàng)建表:

????? create table 表名(

??????????????????????????? 字段1 類型 [約束條件],

???????????????????????????? 字段2 類型 [約束條件],

?????????????????????????????? ……

?????????????????????????????? 字段n 類型 [約束條件]

???????????????????????? )

create table t_user (

id int ,

username varchar(50),

age int,

gender varchar(5)

)

insert插入語句

insert into 表名(字段1,字段2,……,字段n) values(值1,值2,……,值n);

insert into t_user(id,username,age,gender) values(1,"zs",16,'nan');


配置mysql的遠程登錄:

1、到mysql 數據庫?? use? mysql

2、查詢user??? select?? user from??? user;


在沒有配置遠程的情況下:? localhost? |root

3、修改root用戶(現在只有一個root用戶? 所以修改?? 但一般情況下 只修改對應帳號) ????????? update user? set?? host=“%”?? where? user=“root”;


將bind-address 注掉

在修改之后:還需要進入配置文件修改配置文件

4、修改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf???? 找到43行

??????????????????????????????????????????????????????????????????????????????????????? bind-address注釋掉

5、重啟mysql


創(chuàng)建表格:

create table t_hero (

??????????????????????????????? id int primary key auto_increment,(主鍵 ?? 不能重復,不能為空? 自動維護)

??????????????????????????????? name varchar(50) not null,(不能為空)

??????????????????????????????? age int default 40,(如果填入的不寫,則默認填寫40歲)

????????????????????????????????? gender varchar(5),

????????????????????????????????? nikename varchar(50) unique, -- 不能重復,

????????????????????????????????? address varchar(50),

????????????????????????????????? level int default 100

)

插入:

insert into 表名 values(xxxxx);

insert into 表名(字段……) values(xxxxx);

查詢:

select * from tableName;? 查詢所有


select [字段1,字段2,……,字段n] from tableName;


select?? version()? 返回當前數據庫的版本信息

select? now()返回當前時間

select?? database()返回當前所在的數據庫

name varchar(30)?????????? lvbgfbjk???????? 小于30的時候自動做成自己的長度

name char(30)??????????? lvbgfbjk???????? 小于30的時候也占30


日期date(只能表示年月日) time(只能表示時分秒)??? datatime? (年月日時分秒)



grant語句的使用:

grant all on db_py05.* to 'xxx'@'localhost' identified by '543245';

grant all(權限) on db_py05(某個數據庫).*(某張表) to “xxx”(用戶名稱???? 表示創(chuàng)建)@'localhost'(表示只能遠程登錄? %??? 表示可以遠程登錄) identified by '55655'(密碼);

grant all on *.* to 'root'@'%' identified by '123456';


更新

update tableName set 字段1=新值,字段2=新值,字段3=新值 [where condition]

update tableName set 字段1=新值,字段2=新值,字段3=新值 [where condition] 必須跟條件,否則全表更新


刪除

delete from tableName? [where condition]?? 必須帶條件,不帶條件則全表清空

truncate? [table]? tablename; 刪除 慎用??? 不可逆的 常規(guī)手段是不可恢復的

修改

alter的操作

?? 修改類型??? alter table t_user modify type text;


?增加一個字段 ??? alter table t_user add type int;

alter table t_user add (添加)type(列名字) int(類型);


刪除一個字段? alter table t_user drop type;

數據庫的備份:

?????????????? mysqldump:在bin目錄下

????????????????????????? mysqldump 命令

??????????????????????????????? mysqldump –u root –p dbname > 保存路徑.sql

????????????????????????????????? mysqldump –u root –p db_bbs > d:/db_bbs.bak.sql將數據庫db_bbs以腳本的形式保存到D盤]

將sql腳本還原為數據庫

?????????????? mysql –u root –p dbname < 保存路徑

mysql 的單表條件查詢:

1、查詢id為1的用戶:select * from t_user where id=1;



2、查詢id大于等于3的用戶:select * from t_user where id>=3;


3、查詢id不為3的用戶:

????????????????????? select * FROM t_user WHERE id != 3;

?????????????????????? select * FROM t_user WHERE id <> 3;

4、查詢年齡大于10并且姓名為張三的人的性別:

???????????????????????? SELECT gender FROM t_user where age > 10 AND username = '張三';

5、查詢年齡大于等于20 或者性別是男的人的詳情

SELECT * FROM t_user WHERE age >= 20 OR gender = '男';

6、查詢性別為空

注意:在sql中,判斷為空,或者判斷不為空,需要使用is,而不是等于符號

SELECT * FROM t_user where gender is null;

SELECT * FROM t_user where gender is not null;

7、查詢所有人的年齡的和

SELECT SUM(age) FROM t_user;

8、找出年齡最大的那個哥們

SELECT max(age) FROM t_user;

9、找出年齡最大的那個姐們

SELECT min(age) FROM t_user;

10、求當前所有人的平均年齡

SELECT avg(age) FROM t_user;

11、 共有多少人?

SELECT count(*) FROM t_user;

12、共有多少人?

SELECT count(*) as counts FROM t_user;

13、 共有多少人?

SELECT count(*) counts FROM t_user;

14、年齡大于16 并且 年齡小于 20歲

SELECT * FROM t_user where age >= 16 AND age <= 20;

15、年齡大于16 并且 年齡小于 20歲

SELECT * FROM t_user where age BETWEEN 16 AND 20;

16、 查詢年齡為5 8 16 20 30 50的人

SELECT * from t_user where age in (5,8,16,20,30,50);

17、 查詢年齡為5 8 16 20 30 50的人

SELECT * from t_user where age not in (5,8,16,20,30,50);

?模糊查詢? like

1、 查詢姓王的人

SELECT * FROM t_user where username LIKE '王%'

2、 查詢名稱中第二個字是建的

SELECT * FROM t_user where username LIKE '_建%'

SELECT * FROM t_user where username LIKE '%哥%'

SELECT * FROM t_user;

3、 排序

-- 查詢所有用戶,默認使用年齡升序排列

SELECT * FROM t_user order by age ;

SELECT * FROM t_user where age > 10 order by age asc;

SELECT * FROM t_user where age > 10 order by age desc;

SELECT * FROM t_user where age > 10 order by age desc, id asc;

4、分組

?統計當前男生有多少人,女生多少人

SELECT count(gender) FROM t_user;

SELECT gender,count(*) FROM t_user group by gender;

SELECT age FROM t_user GROUP BY age;

?通過性別進行分組,得到組員多余3人的

having 必須是出現group by之后,它是對分組結果進行篩選

SELECT gender,count(*) as counts FROM t_user group by gender having counts > 3;

SELECT * FROM t_user LIMIT 5;

SELECT * FROM t_user LIMIT 0,2;

SELECT * FROM t_user LIMIT 2,2;

SELECT * FROM t_user LIMIT 4,2;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容