前言:初始mysql,mysql應該是全部程序員都會接觸的一門語言,它的重要性相信你們都知道,它是底層的底層,是後端的支柱,是程序中不可或缺的語言,倘若你尚未下載安裝mysql,please點擊---MaraiDB下載安裝--mysqlmysql
數據庫:存儲和管理數據的倉庫
數據庫是一個專業的存儲和管理數據的軟件系統,比傳統的人工或文件保存數據小路更高、更安全、更可靠。程序員
數據庫有哪些分類(瞭解)
早期:層次是數據庫、網絡型數據庫
如今:關係型數據庫和非關係型數據庫sql
關係型數據庫就是底層以二維表的形式保存數據的庫就是關係型數據庫
保存學生信息(student表)mongodb
編號 | 姓名 | 成績 |
---|---|---|
1 | 王二妮 | 88 |
2 | 李鐵柱 | 74 |
3 | 陳翠花 | 97 |
常見的關係型數據庫有哪些?(瞭解)數據庫
什麼是非關係型數據庫?(瞭解)後端
SQL:結構化查詢語言
是一門用於關係型數據庫的通用的語言安全
下載安裝MySQL
連接:https://pan.baidu.com/s/1QacdiQT_jB_POaA7V08_dw服務器
經過命令行工具能夠登陸MySQL客戶端,鏈接MySQL服務器,從而訪問服務器中的數據。網絡
1.鏈接mysql服務器:
mysql -uroot -proot
-u:後面的root是用戶名,這裏使用的是超級管理員root;
-p:(小寫的p)後面的root是密碼,這是在安裝MySQL時就已經指定的密碼;函數
C:\WINDOWS\System32>mysql -uroot -proot Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 25 Server version: 10.3.7-MariaDB mariadb.org binary distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
2.鏈接mysql服務器並指定IP和端口
mysql -uroot -proot -h127.0.0.1 -P3306
-h:後面給出的127.0.0.1是服務器主機名或ip地址,能夠省略的,默認鏈接本機;
-P:(大寫的P)後面的3306是鏈接端口,能夠省略,默認鏈接3306端口;
3.退出客戶端命令:quit 或 exit 或 \q
4.註釋
可使用#、/* */、--等符號添加註釋
5.FAQ:常見問題:
解決方法:複製mysql安裝目錄下的bin目錄,將bin目錄的路徑添加到path環境變量中
提示: (1)SQL 語句對大小寫不敏感。推薦關鍵字使用大寫,自定義的名稱(庫名,表名,列名等)使用小寫。
(2)而且在自定義名稱時,針對多個單詞不要使用駝峯命名,而是使用下劃線鏈接。(例如:tab_name,而不是 tabName)
-- 01.查看mysql服務器中全部數據庫 show databases; -- 02.進入某一數據庫(進入數據庫後,才能操做庫中的表和表記錄) -- 語法:USE 庫名; use test; -- 查看已進入的庫 SELECT DATABASE(); -- 03.查看當前數據庫中的全部表 show tables; -- 04.刪除mydb1庫 -- 語法:DROP DATABASE 庫名; drop database mydb1; -- 思考:當刪除的庫不存在時,如何避免錯誤產生? drop database if exists mydb1; -- 05.從新建立mydb1庫,指定編碼爲utf8 -- 語法:CREATE DATABASE 庫名 CHARSET 編碼; create database mydb1 charset utf8; -- 若是不存在則建立mydb1; create database if not exists mydb1 charset utf8; -- 06.查看建庫時的語句(並驗證數據庫庫使用的編碼) -- 語法:SHOW CREATE DATABASE 庫名; show create database mydb1;
編號 | 姓名 | 性別 | 生日 | 分數 |
---|---|---|---|---|
--07.進入mydb1庫,刪除stu學生表(若是本來存在) --語法:DROP TABLE 表名 use mydb1; drop table if exists stu;
-- 08.建立stu學生表(編號[數值類型]、姓名、性別、出生年月、考試成績[浮點型]),建表的語法: --CREATE TABLE 表名( -- 列名 數據類型, -- 列名 數據類型, -- ... --); use mydb1; drop table if exists stu; create table stu( id int primary key auto_increment, -- 設置id爲主鍵 name varchar(50), gender varchar(10), birthday date, score double );
-- 09.查看stu學生表結構 -- 語法:desc 表名 desc stu;
-- 10.往學生表(stu)中插入記錄(數據) -- 語法:INSERT INTO 表名(列名1,列名2,列名3...) VALUES(值1,值2,值3...); insert into stu(id,name,gender,birthday,score) value ( null,'王二妮','女','2001-3-4',89); insert into stu values(null,'李鐵柱','男','1998-1-1', 84); insert into stu values(null,'陳翠花','女','2000-2-5', 90); insert into stu(name,gender) values('張三','男');
提示:
或者用一下命令鏈接mysql服務器:
mysql --default-character-set=gbk -uroot -proot
-- 11.查詢stu表全部學生的信息 -- 語法:SELECT 列名 | * FROM 表名 select * from stu; -- 12.修改stu表中全部學生的成績,加10分特長分 -- 修改語法: UPDATE 表名 SET 列=值,列=值,列=值...[WHERE子句]; update stu set score=score+10; update stu set score+=10; -- 語法錯誤,mysql不支持+= -- 13.修改stu表中編號爲1的學生成績,將成績改成83分。 update stu set score=83 where id=1;
提示:where子句用於對記錄進行篩選過濾,保留符合條件的記錄,將不符合條件的記錄剔除。
-- 14.刪除stu表中全部的記錄 -- 刪除記錄語法: DELETE FROM 表名 [where條件] delete from stu; truncate table stu; -- 僅刪除符合條件的 delete from stu where id>3;
drop、delete、truncate三者的區別
準備數據:將下面的數據粘貼在msql中
-- 建立db10庫、emp表並插入記錄 -- ----------------------------------- -- 刪除db10庫(若是存在) drop database if exists db10; -- 從新建立db10庫 create database db10 charset utf8; -- 選擇db10庫 use db10; -- 刪除員工表(若是存在) drop table if exists emp; -- 建立員工表 create table emp( id int primary key auto_increment, -- 員工編號 name varchar(50), -- 員工姓名 gender char(1), -- 員工性別 birthday date, -- 員工生日 dept varchar(50), -- 所屬部門 job varchar(50), -- 所任職位 sal double, -- 薪資 bonus double -- 獎金 ); -- 往員工表中插入記錄 insert into emp values(null,'王富國','男','1995-10-25','市場部','部門總監','8400','1200'); insert into emp values(null,'齊雷鋒','男','1994-11-6','市場部','市場調查員','5600','800'); insert into emp values(null,'劉治雪','女','1996-09-14','市場部','營銷講師','3000','1300'); insert into emp values(null,'陳子封','男','1991-05-18','技術部','部門總監','4200','500'); insert into emp values(null,'劉海濤','男','1993-11-18','技術部','研發員','6600','500'); insert into emp values(null,'王明悅','女','1998-07-18','技術部','測試師','5400','600'); insert into emp values(null,'蒼若智','男','1995-08-18','人事部','部門總監','4850','800'); insert into emp values(null,'範中閒','男','1999-09-18','人事部','人力資源師','3600','600'); insert into emp values(null,'劉克','男','1990-10-18','人事部','助理','3200','400'); insert into emp values(null,'韓約','男','1980-12-18',null,'CEO','11000',null);
SELECT 語句用於從表中選取數據。結果被存儲在一個結果表中(成爲結果集)。
提示:
-- 15.查詢emp表中的全部員工,顯示姓名,薪資,獎金 select name, sal, bonus from emp; -- 16.查詢emp表中的全部部門和職位 select dept, job from emp; --思考:若是查詢的結果中,存在大量重複的記錄,如何剔除重複記錄,只保留一條? */ -- 在select以後、列名以前,使用DISTINCT 剔除重複的記錄 select distinct dept, job from emp;
WHERE子句查詢語法:SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值
下面的運算符可在 WHERE 子句中使用:
-- 17.查詢emp表中薪資大於3000的全部員工,顯示員工姓名、薪資 select name, sal from emp where sal>3000; -- 18.查詢emp表中總薪資(薪資+獎金)大於3500的全部員工,顯示員工姓名、總薪資 select name, sal+bonus from emp where sal+bonus > 6500; -- 結果不許確。 -- ifnull(列, 值)函數: 判斷指定的列是否包含null值,若是有null值,用第二個值替換null值 select name, sal+ifnull(bonus, 0) from emp where sal+ifnull(bonus, 0) > 6500; -- 注意查看上面查詢結果中的表頭,如何將表頭中的 sal+bonus 修改成 "總薪資" select name as 姓名, sal+ifnull(bonus, 0) as 總薪資 from emp where sal+ifnull(bonus, 0) > 6500; -- as用於指定別名, as能夠省略。 -- where子句中不能使用列別名 -- 19.查詢emp表中薪資在3000和4500之間的員工,顯示員工姓名和薪資 select name, sal from emp where sal>=3000 and sal<=4500; -- 提示: between...and... 在..和..之間 select name, sal from emp where sal between 3000 and 4500; -- 默認包含頭和尾 -- 20.查詢emp表中薪資爲 5600、3000、4200的員工,顯示員工姓名和薪資 select name, sal from emp where sal=5600 or sal=3000 or sal=4200; -- 或 select name, sal from emp where sal in(5600,3000,4200); -- 21.查詢薪資不爲5600、3000、4200的員工 select name, sal from emp where sal!=5600 and sal!=3000 and sal!=4200; -- 或 select name, sal from emp where not(sal=5600 or sal=3000 or sal=4200); -- 或 select name, sal from emp where sal not in(5600,3000,4200);
-- 22.查詢emp表中薪資大於8000和薪資小於4000的員工,顯示員工姓名、薪資。(本身完成) select name,sal from emp where sal>=8000 or sal<=4000; -- 23.查詢emp表中薪資大於3000而且獎金小於600的員工,顯示員工姓名、薪資、獎金。(本身完成) select name,sal,bonus from emp where sal>6000 and bonus<1000; -- 處理null值 select name,sal,bonus from emp where sal>6000 and ifnull(bonus,0)<1000; -- 24.查詢沒有部門的員工(即部門列爲null值) select * from emp where dept is null; -- 思考:如何查詢有部門的員工(即部門列不爲null值) select * from emp where dept is not null; --正確 select * from emp where dept not is null; -- 錯誤!
講解二,你值得擁有——————MySQL數據庫表的模糊/多行/分組/排序/分頁查詢以及字mysql數據類型的講解---講解二
try your best you can do it! 不要去懷疑本身有多大的能力,只要你敢,那就比猶豫不決的成功了一半,更況且,難道你不相信你本身?you can do it!