122-C語言的順序程式設計
今日內容
-
mysql安裝與解除安裝
-
mysql配置
-
SQL:結構化查詢語言 Structured Quary Language
-
DDL:操作資料庫、表
-
DML:增刪改表中的記錄
-
DQL: 查詢表中的記錄
-
DCL: 管理使用者與授權
mysql安裝與解除安裝
-
安裝mysql 參見mysql安裝文件
-
解除安裝分成兩步:
-
安裝版:
-
找到my.ini datadir = C:/xxx 刪除該目錄下的檔案
-
從控制面板中一鍵解除安裝 mysql服務開啟狀態
-
-
配置版:
-
使用管理員許可權開啟cmd指令視窗 輸入 net stop mysql
-
在指令視窗中 輸入 mysqld -remove
-
刪除本地安裝的mysql目錄資料夾
-
-
-
mysql配置
-
mysql服務啟動
-
通過管理員開啟cmd指令視窗 輸入 net start mysql
-
找到window服務視窗 開啟執行視窗 輸入 services.msc ----> 找到mysql 手動啟動
-
-
mysql登入
-
藉助cmd指令視窗
-
mysql -u登入賬號 -p 登入密碼 沒有密碼直接回車就可以
-
mysql -h連線伺服器的ip地址 -u登入賬號 -p登入密碼
mysql -hlocalhost/127.0.0.1 -uroot -proot;
如果通過ip連線不上,說明許可權不夠,給root賬號開啟連線mysql連線的許可權
grant all privilegegs on *.* to root@'%' identified by '連線伺服器的密碼' with admin option/ with grant option 0. 使用mysql資料庫 use mysql; 1. grant all privileges on *.* to root@'%' identified by 'root' with grant option; 2. flush privilegegs; 重新整理mysql的系統許可權 3. 退出 重新通過ip進入
-
-
藉助於mysql視覺化管理工具 Navicat
解壓Navicat壓縮包 簡單破解下,點選連線選擇mysql 在連線視窗中輸入連線名、連線伺服器ip地址 、登入的賬號和密碼--->test 如果連線成功,程式碼已經成功登入進來
-
-
mysql 退出
-
quit
-
exit
-
-
mysql目錄結構
-
mysql安裝目錄結構 basedir目錄中
-
bin: 二進位制檔案 mysql可執行的指令碼 mysqld.exe
-
data: 資料 mysql執行需要的資料檔案還有mysql執行的日誌檔案
-
include: C語言的頭資訊
-
lib: mysql執行需要支援的一些類庫 jar包檔案
-
share:mysql執行的一些錯誤資訊
-
my.ini mysql的配置資訊
-
-
mysql資料目錄結構 datadir目錄中
-
資料庫: 一個個資料夾
-
表 : 就是一個個檔案
-
資料 :一條條記錄
-
-
-
-
資料庫管理系統、資料庫和表的關係
可以使用資料庫管理系統建立多個數據庫,比如java31/apartment資料庫.....,一般一個專案對應的是一個數據庫,一個數據庫可以建立多張表,一般在專案中,資料庫中的表對映Model類 pojo、model、entry
比如資料庫中建立一張使用者表user 在後臺伺服器中一般對應的有一個model類 User.class
後臺中的model類 一般用於臨時儲存從資料庫中查詢出來對應表中的資料, 如從user表查詢出來一條記錄,這條記錄對應的就是後臺伺服器中的一個user物件(屬性)
SQL 操作資料庫
##### 概念:結構化查詢語言 Structured Quary Language
##### 作用
-
是一種資料庫的查詢的標準,對所有的資料庫都支援
-
不同的資料庫SQL語句可能有點不同 (方言),mysql oracle DB2
sql語句分類
1.DDL:操作資料庫、表 資料定義語言 Data Definition Language
2.DML:增刪改表中的記錄 資料操作語言 Data Manipulation Language
3.DQL: 查詢表中的記錄 資料查詢語言 Data Query language
4.DCL: 管理使用者與授權 Data Control language 資料控制語言
DDL 語言
-
操作資料庫 CRUD操作
-
建立資料庫 方式有很多種: C ---create
-
create database 資料庫名;
-
create database if not exists 資料庫名;// 建立的時候先判斷資料庫是否存在
-
create database 資料庫名 character set 編碼字符集;// 建立資料庫的指定編碼字符集
-
-
-- 分號 一般是sql語句的結束標誌
create DATABASE java31;
-- 建立資料庫的第二種方式 create database if not exists 資料庫名;
create database if not EXISTS apartment;
-- 建立資料庫的第三種方式 create database 資料庫名 character set 編碼字符集;
create database school character set utf8;
-- 三者組合到一起表達
create database if not EXISTS college character set utf8;
-
查詢 r --->retrieve
-
查詢當前資料庫伺服器的所有的資料庫
show databases;
-
查詢某個資料庫的編碼字符集:查詢某個建立的資料庫的編碼字符集
show create database 資料庫名稱;
-
-
修改 u--->update
-
修改資料庫的編碼字符集
alter database 資料庫名稱 character set 編碼字符集;
-
-- alter database 資料庫名稱 character set 編碼字符集;
alter database college character set gbk;
-
刪除 d -->delete drop
-
刪除資料庫
drop database 資料庫名稱;
-
判斷資料庫是否存在,如果存在刪除掉
drop database if exists 資料庫名稱;
-
-- drop database if exists 資料庫名稱;
drop database if EXISTS school;
-
操作表
-
建立表 C --> create
-
語法:
create table 表名(
列名1 資料型別,
列名2 資料型別,
。。。。。。。
);
-
資料型別
-
整數型別 tinyint(微整形) 8位 smallint(小整形)16位 mediumint(中整形)24位 int(integer) 整形32位
-
小數型別 double 8個位元組 float 4個位元組
-
日期型別 date (年月日) time (時分秒) datetime (年月日時分秒) timestamp 時間戳 年月日時分秒
時間戳,如果該欄位為時間戳型別,沒有賦值或者該欄位值為null,則預設使用系統當前的時間自動賦值。一般情況一張表中只能有一個欄位使用時間戳資料型別。
-
字串型別 char(固定長度的字串) varchar(可變長度的字串) 使用幾個字元就佔幾個
-
二進位制型別 tinyblob(允許0~255個位元組) big large blob(允許0~65535個位元組) longblob(非常大)
-
文字型別 tinytext (允許長度為0~255個位元組) text(允許0~65535個位元組) longtext(非常大)
-
-
-
查看錶 查詢 retrieve
-
show tables 檢視當前使用的資料庫下面的所有的表
-
desc 表名; 描述該表的結構
-
檢視建立的表 show create table 表名;---->檢視該表建立使用到的sql語句
-
快速建立一個表結構相同的表 create table 新表名 like 舊錶名;
-
-
修改 update
-
修改表名 alter
alter table 舊錶名 rename to 新表名;
-
修改表的字符集
alter table 表名 character set 編碼字符集;
-
新增一列欄位 add
alter table 表名 add 列名 資料型別;
-
刪除一列 drop
alter table 表名 drop 列名;
-
修改列名 資料型別
-
change alter table 表名 change 舊列名 新列名 新資料型別;
-
modify alter table 表名 modify 列名 新資料型別;
-
-
-
刪除 delete
-
刪除表 drop table 表名;
-
刪除判斷表是否存在 drop table if exists 表名;
-
大多數情況下我們是直接藉助於圖形化管理工具 Navicat直接操作。
-
DML 增刪改資料庫中的表的資料
-
新增資料:
-
語法:
-
insert into 表名(列名1,列名2,......列名n) values(值1,值2,......值n);
-
注意事項:
-
列名和後面值的型別要保持一致。
-
如果表名後面沒有指定列名,預設為給該表中的所有的列新增對應的值。注意依然是有順序的。
insert into 表名 values(值1,值2,......值n);
-
除了數字型別外(int,double),其他型別一律要使用引號(單引號和雙引號都可以)引起來。
-
-
-
-
刪除資料:
-
語法: delete
delete from 表名 [where 條件];
-
注意事項:
-
如果後面不跟條件 ,則刪除整張表的資料
-
刪除表的所有的記錄 delete from student / truncate table 表名;(底層是先把表刪除掉,然後再建立一張一模一樣的表)
-
如果條件中的欄位值有重複的,凡是符合條件的都刪除。
-
-
-
修改資料:update
-
語法:
update 表名 set 列名1 = 替換值1, 列名2 =替換值2,.....列名n = 替換值n [where 條件];
-
注意:
-
如果不帶條件,則會修改表中的所有記錄
-
-
DQL 查詢表中的記錄 select .... from .....
-
語法
select 需要查詢的資訊(列名1,列名2,.......列名n) / * from 表名 [where 條件];
完善下:
select
欄位列表
from
表名列表
where
條件列表
group by
分組欄位
having
分組之後的條件
limit
分頁限定
-
去重查詢 distinct
-
ifnull表示式 ifnull(表示式1,表示式2)
表示式1: 代表那個欄位需要判斷是否為null
表示式2:如果該欄位值為null 後面的進行替換
-
起別名操作
語法 as 也可以省略不寫 表名 as 新的名字
查詢出來的欄位資訊 as 新名字
當你查詢同一張表,並且進行多次查詢的時候可以使用起別名來實現
注意:
起別名 只是在sql語句中方便查詢使用的,並不會對資料原來的檔案起到任何影響
程式碼語句
-- 註釋 mysql中的註釋 -- 空格 註釋的內容 單行註釋
/*
多行註釋 (不能巢狀)
*/
# 註釋
-- select* from address
-- 建立資料庫的第一種方式 SQL建議使用大寫 大寫和小寫一般不區分
-- 分號 一般是sql語句的結束標誌
CREATE DATABASE java31;
-- 建立資料庫的第二種方式
CREATE DATABASE
IF NOT EXISTS apartments;
CREATE DATABASE school CHARACTER
SET utf8;
-- 三者組合到一起表達
CREATE DATABASE
IF NOT EXISTS college CHARACTER
SET utf8 -- 查詢
-- 查詢當前所有的資料庫
SHOW DATABASES;
SHOW CREATE DATABASE college -- alter database 資料庫名稱 character set 編碼字符集;
ALTER DATABASE college CHARACTER
SET gbk -- drop database 資料庫名稱;
DROP DATABASE college;
-- drop database if exists 資料庫名稱;
DROP DATABASE
IF EXISTS school;
/*
create table 表名(
列名1 資料型別,
列名2 資料型別,
……
);
*/
-- 選擇使用哪一個資料庫 use 資料庫名稱
USE java31;
-- 建立學生表
CREATE TABLE Student (
id INT,-- id 整數型別
username VARCHAR(20),-- 姓名 可變字串長度為20
birthday date,-- 生日 日期型別
gender VARCHAR(1)-- 性別 可變字串長度為1
);
-- show tables 檢視當前使用的資料庫下面的所有的表
show tables;
-- desc 表名:描述該表的結構
DESC student;
-- 檢視建立的表:show create table 表名;
show CREATE table student;
-- 快速建立一個表結構相同的表 create table 新表名 like 舊錶名; 複製表
CREATE table baby like student;
-- 檢視baby表結構
desc baby;
-- alter table 舊錶名 rename to 新表名;
alter table baby rename to children;
-- 再次檢視baby表結構
desc baby;
-- alter table 表名 character set 編碼字符集;
show CREATE TABLE children;
alter table children CHARACTER set gbk;
desc children;
-- 給該表新增一個成績的欄位 score int(10)
-- alter table 表名 character add 列名 資料型別;
ALTER table children add score int(10);
-- alter table 表名 drop 列名;
alter table children drop score;
-- change alter table 表名 change 舊列名 新列名 新資料型別;
alter table children change gender sex int(1);
-- alter table 表名 modify 列名 新資料型別;
alter table children modify sex varchar(1);
-- 刪除表 drop table 表名;
DROP table children;
-- 刪除判斷表是否存在 drop table if exists 表名;
drop table if EXISTS children;
-- 練習
show CREATE table children;
CREATE table laybaby like student;
desc laybaby;
drop table laybaby;
desc student;
-- 給學生表新增一條資料
-- insert into 表名(列名1,列名2,……列名n) values (值1,值2,……值n)
insert into student(id,username,birthday,gender) values (001,'小孫','1990-10-1','男');
-- 檢視該表中的資料 select FROM
select* from student;
INSERT into student values(002,'小王','2020-10-1','女');
-- 插入一條記錄 只新增姓名和姓名
INSERT into student(username,gender) values('小劉','男');
-- delete from 表名[where = 條件];根據表中的某個或某些欄位的資訊進行刪除 一般刪除都是用主鍵
delete from student where username = '小劉';
-- 欄位值有重複
delete from student where gender = '男';
-- 刪除整張表的記錄
truncate table student;
-- 不使用條件
delete from student;
-- update 表名 set 列名1 = 替換值1,列名2 = 替換值2……列名n= 替換值n [where 條件];
update student set username= '小趙' where username = '小孫';
-- 全部改變
update student set id = '1000',username = '小麗',birthday = '2020-10-10',gender = '女' where username = '小趙';
-- 不帶條件
update student set id = '1000',username = '小麗',birthday = '2020-10-10',gender = '女';
-- select 需要查詢的資訊(列名1,列名2,……列名n) / * from 表名[where 條件];
-- 查詢男性同胞的姓名
select username from student where gender = '男';
-- 查詢表中姓名含有小的同胞
select * from student where username like '%小%';
select * from student where username like '%孫%';
-- 查詢表中的男性中的名字含有小的同胞
select * from student where username like '%小%' and gender = '男';