目次
関連する MySQL ステートメントを作成する
データベースを作成し、エンコード形式を指定します。
create DATABASE IF NOT EXISTS mydb CHARSET=utf8
テーブルを作成します (テーブルの主キーとエンコード形式を指定します):
CREATE TABLE
IF NOT EXISTS `student` (
`id` INT UNSIGNED AUTO_INCREMENT,
`name` VARCHAR ( 50 ) NOT NULL,
`age` INT NOT NULL,
`sex` bit ( 2 ),
`create_time` datetime,
PRIMARY KEY ( `id` )
) ENGINE = INNODB DEFAULT CHARSET = utf8;
テーブルのすべての列にデータを挿入します。
INSERT INTO students VALUES (3,'xiaofang',20,1,'2022-11-29 09:46:46','1999-03-16')
テーブルの一部の列にデータを挿入します。挿入されない列のデフォルト値は null です。
INSERT INTO students (`id`,`name`,`age`,`sex`) VALUES (1,'panshunjun',18,0)
テーブルを作成するときは、列が空ではなく、一意であることを指定します。
create TABLE t_stu(
sid int PRIMARY KEY auto_increment,
`name` VARCHAR(50) not null UNIQUE);
テーブルを作成し、テーブルに外部キーを指定します。
create table emp(
id int PRIMARY KEY auto_increment,
emp varchar(20),
deptId int,
CONSTRAINT fk_emp_dept FOREIGN KEY(deptId) REFERENCES dept(id))
関連する MySQL ステートメントを削除する
データベースをドロップします。
DROP DATABASE IF EXISTS mydb
テーブルを削除します (student はテーブル名です):
DROP table student
テーブルの列を削除する
alter table student drop `telphone`
条件に基づいてテーブルの内容を削除します。
delete from students where id=1
注: delete はテーブルの内容を削除することです。テーブルの構造はそのままです。drop はテーブル全体を削除することです。
最初にテーブルを削除してから、テーブルを再作成します。
TRUNCATE table t_project
テーブルの主キーを削除する
ALTER table students drop PRIMARY key
関連する MySQL ステートメントを変更する
データのエンコード形式を変更します (mydb はデータベース名、utf8 はエンコード形式です)。
ALTER DATABASE mydb CHARACTER set utf8
テーブルにいくつかの列を追加します (student はテーブル名です)。
alter table student add(`birthday` date,`phone` VARCHAR(20))
テーブルの列のタイプを変更します (student はテーブル名です)。
ALTER table student MODIFY `birthday` datetime
テーブル内の列の名前を変更します。
alter TABLE student change `phone` `telphone` varchar(22)
テーブルのテーブル名を変更します。
alter table student RENAME to students
条件に従ってテーブルのデータを変更します。
update students set age=28 where id BETWEEN 1 AND 3
update students set age=NULL where name in('panshunjun')
データベースのエンコード形式を変更します。
set CHARACTER_set_client =utf8
注: (CHARACTER_set_client は MySQL にデータを送信するための形式、character_set_results は MySQL から送信するための形式です。この変更方法は 1 回だけです。変更せずに 1 回変更する場合は、 my.ini 構成ファイル)
作成したテーブルに主キーを追加します。
ALTER table students ADD PRIMARY key(id)
作成済みのテーブルに外部キー制約を追加する
ALTER table emp
add CONSTRAINT fk_emp_dept FOREIGN KEY(deptId) REFERENCES dept(id)
クエリ関連の MySQL ステートメント
現在のデータベースをすべて表示します。
show databases
現在のデータベースの下にあるすべてのテーブルを表示します。
show tables
指定されたテーブルの作成ステートメントを照会します (student はテーブル名です)。
SHOW CREATE TABLE student
クエリ テーブルの構造 (student はテーブル名):
desc student
テーブルのすべての列データをクエリする
select * from students
指定された列を照会する
select name,age,sex,birthday from students
DISTINCT:重複データは 1 回だけ表示されます (すべてが同じ場合のみ、1 つの行にマージされます)。
SELECT DISTINCT `name`,age,id from students
列操作(計算、文字列連結)
select age+1 ,CONCAT('姓名:',name) from students
IFN ULL (age,0) -- age=null の場合、0 に変換
select name,IFNULL(age,0)+1 from students
カラムの別名(省略可)
select name,IFNULL(age,0)+1 as newAge from students
条件付きクエリ
select * from students where age>10 and `name` is not null
in メソッド:名前が xiaofang と zhangsan であるすべての情報を照会します
select * from students where `name` in ('xiaofang','zhangsan')
あいまいクエリ: '_' は任意の 1 文字に一致することを意味し、'%' は任意の n 文字に一致することを意味します
select * from students where `name` like 'panshunju_'
select * from students where `name` like 'pan%'
並び替え:年齢昇順、同年齢の場合は名前降順(デフォルトは昇順)
select * from students ORDER BY age ASC,name desc
集計関数を使用したクエリ:
テーブル内の行数を照会します。
select count(1) as '行数' number from students
Sum: sumAge をエイリアスとして age 列の合計をクエリします。
select sum(age) sumAge from students
最大値問題: age の最大値を問い合わせる
select max(age) as maxAge from students
平均問題:平均年齢のクエリ
select avg(age) as avgAge from students
関数の包括的な適用:テーブルの包括的なデータを計算します
select count(1) as 人数总和,sum(age) as 年龄总和,max(age) as 最大年龄,min(age) as 最小年龄,avg(age) as 年龄平均值 from students
Grouping: grouping (性別ごとの男女の合計数のクエリ)
select sex,count(*) from students where id>2 GROUP BY sex
グループ化条件:ここで、条件はグループ化を導く前の状態であり、グループ化を導く HAVING 後の状態です。
select sex,count(*) from students where id>2 GROUP BY sex HAVING count(*)>1
Limit : LIMIT は、検索を開始する行数と、クエリするデータの合計数を指定するために使用されます (0 は、データ行から開始することを意味します)。
select * from students LIMIT 0,5
mysql データベースのエンコーディングを表示します。
SHOW VARIABLES LIKE 'char%'
2 つのテーブルの結果セット (ユニオン) をマージします。
//创建表ab
create table ab(a int,b varchar(10))
INSERT into ab VALUES(1,'1')
INSERT into ab VALUES(2,'2')
INSERT into ab VALUES(3,'3')
INSERT into ab VALUES(4,'4')
//创建表cd
create table cd(c int,d varchar(10))
INSERT into cd VALUES(3,'3')
INSERT into cd VALUES(4,'4')
//合并结果集查询
select * from ab UNION select * from cd
複数テーブル結合クエリ -- 内部結合:
//标准写法:
select * from emp e INNER JOIN dept d on e.deptId=d.id
注:内部結合は、2 つのテーブルのデカルト積からすべての適格なコンテンツを検出し、適格でないコンテンツはテーブルに表示されません。
左外部結合クエリ:
//标准写法:
select emp,deptId,IFNULL(dname,'无数据') as dname from emp as e
left join dept d
on e.deptId=d.id
注:左のテーブルをメイン テーブルとして使用する場合、メイン テーブルの既存のデータが表示されます。メイン テーブルに、条件を満たさない対応するスレーブ テーブルがない場合は、null が使用されて置き換えられます。それ。
右外部結合クエリ: (左外部結合クエリと同様)
//标准写法
select emp,deptId,d.id ,d.dname from emp as e
right JOIN dept d
on d.id=e.deptId
複数テーブル結合クエリの理解:例えば、テーブルaに5個のデータ(プライマリ)、テーブルbに4個のデータがある場合、無条件内部結合と左右外部結合クエリを使用すると、20個のデータが条件付き内部結合クエリを使用すると、20 個の適格なデータが表示され、条件付き左右外部結合クエリを使用すると、20 個の適格なデータが表示され、メイン テーブルのすべての無条件データが表示されます。
バックアップと復元:
//バックアップデータスクリプト(データベースの内容のみバックアップ)
mysqldump -uroot -p123 mydb3>c:/a.sql
// データベース スクリプトの復元 (2 つの方法)
mysqldump -uroot -p123 mydb3<c:/a.sql
source c:/a.sql
注: root データベース アカウント 123 データベース パスワード mydb3 データベース名 c:/a.sql 保存アドレス
データベース権限設定
データベースのユーザー名と固定 IP を指定します。
create USER [email protected] IDENTIFIED by '123456'
データベースのユーザー名と IP を指定します。
create USER admin@'%' IDENTIFIED by '123456'
ry データベースのすべての権限を、任意の IP で管理者ユーザーに付与します。
GRANT ALL ON ry.* to admin@'%'
ry データベース管理者アカウントの CREATE、ALTER、および DROP 権限を取り戻す
REVOKE CREATE,ALTER,DROP ON ry.* FROM admin@'%'
特定の IP でアカウントが所有する権限を表示する
SHOW GRANTS for admin@'%'
特定の IP でユーザーを削除する (権限の問題)
drop user admin@'%'
注: where (GRANT ALL (すべての権限) , GRANT CREATE (作成権限) , ALTER (変更権限) , DROP (削除権限) , INSERT (テーブル挿入権限) , UPDATE (テーブル変更権限) , DELETE (テーブル削除権限) 、SELECT ON (テーブルクエリ権限)
他の文
データベースの切り替え:
use mydb